blob: a154392d8ab357b329b110d24168faed2a6160c5 [file] [log] [blame]
// RUN: mlir-opt -split-input-file -verify-diagnostics %s
// expected-error@+1 {{gang, worker or vector cannot appear with the seq attr}}
acc.loop gang {
"test.openacc_dummy_op"() : () -> ()
acc.yield
} attributes {seq}
// -----
// expected-error@+1 {{gang, worker or vector cannot appear with the seq attr}}
acc.loop worker {
"test.openacc_dummy_op"() : () -> ()
acc.yield
} attributes {seq}
// -----
// expected-error@+1 {{gang, worker or vector cannot appear with the seq attr}}
acc.loop vector {
"test.openacc_dummy_op"() : () -> ()
acc.yield
} attributes {seq}
// -----
// expected-error@+1 {{gang, worker or vector cannot appear with the seq attr}}
acc.loop gang worker {
"test.openacc_dummy_op"() : () -> ()
acc.yield
} attributes {seq}
// -----
// expected-error@+1 {{gang, worker or vector cannot appear with the seq attr}}
acc.loop gang vector {
"test.openacc_dummy_op"() : () -> ()
acc.yield
} attributes {seq}
// -----
// expected-error@+1 {{gang, worker or vector cannot appear with the seq attr}}
acc.loop worker vector {
"test.openacc_dummy_op"() : () -> ()
acc.yield
} attributes {seq}
// -----
// expected-error@+1 {{gang, worker or vector cannot appear with the seq attr}}
acc.loop gang worker vector {
"test.openacc_dummy_op"() : () -> ()
acc.yield
} attributes {seq}
// -----
// expected-error@+1 {{expected non-empty body.}}
acc.loop {
}
// -----
// expected-error@+1 {{only one of auto, independent, seq can be present at the same time}}
acc.loop {
acc.yield
} attributes {auto_, seq}
// -----
// expected-error@+1 {{at least one operand or the default attribute must appear on the data operation}}
acc.data {
acc.yield
}
// -----
// expected-error@+1 {{at least one value must be present in hostOperands or deviceOperands}}
acc.update
// -----
%cst = arith.constant 1 : index
%value = memref.alloc() : memref<10xf32>
// expected-error@+1 {{wait_devnum cannot appear without waitOperands}}
acc.update wait_devnum(%cst: index) host(%value: memref<10xf32>)
// -----
%cst = arith.constant 1 : index
%value = memref.alloc() : memref<10xf32>
// expected-error@+1 {{async attribute cannot appear with asyncOperand}}
acc.update async(%cst: index) host(%value: memref<10xf32>) attributes {async}
// -----
%cst = arith.constant 1 : index
%value = memref.alloc() : memref<10xf32>
// expected-error@+1 {{wait attribute cannot appear with waitOperands}}
acc.update wait(%cst: index) host(%value: memref<10xf32>) attributes {wait}
// -----
%cst = arith.constant 1 : index
// expected-error@+1 {{wait_devnum cannot appear without waitOperands}}
acc.wait wait_devnum(%cst: index)
// -----
%cst = arith.constant 1 : index
// expected-error@+1 {{async attribute cannot appear with asyncOperand}}
acc.wait async(%cst: index) attributes {async}
// -----
acc.parallel {
// expected-error@+1 {{'acc.init' op cannot be nested in a compute operation}}
acc.init
acc.yield
}
// -----
acc.loop {
// expected-error@+1 {{'acc.init' op cannot be nested in a compute operation}}
acc.init
acc.yield
}
// -----
acc.parallel {
// expected-error@+1 {{'acc.shutdown' op cannot be nested in a compute operation}}
acc.shutdown
acc.yield
}
// -----
acc.loop {
// expected-error@+1 {{'acc.shutdown' op cannot be nested in a compute operation}}
acc.shutdown
acc.yield
}
// -----
acc.loop {
"test.openacc_dummy_op"() ({
// expected-error@+1 {{'acc.shutdown' op cannot be nested in a compute operation}}
acc.shutdown
}) : () -> ()
acc.yield
}
// -----
// expected-error@+1 {{at least one operand in copyout, delete or detach must appear on the exit data operation}}
acc.exit_data attributes {async}
// -----
%cst = arith.constant 1 : index
%value = memref.alloc() : memref<10xf32>
// expected-error@+1 {{async attribute cannot appear with asyncOperand}}
acc.exit_data async(%cst: index) delete(%value : memref<10xf32>) attributes {async}
// -----
%cst = arith.constant 1 : index
%value = memref.alloc() : memref<10xf32>
// expected-error@+1 {{wait_devnum cannot appear without waitOperands}}
acc.exit_data wait_devnum(%cst: index) delete(%value : memref<10xf32>)
// -----
// expected-error@+1 {{at least one operand in copyin, create, create_zero or attach must appear on the enter data operation}}
acc.enter_data attributes {async}
// -----
%cst = arith.constant 1 : index
%value = memref.alloc() : memref<10xf32>
// expected-error@+1 {{async attribute cannot appear with asyncOperand}}
acc.enter_data async(%cst: index) create(%value : memref<10xf32>) attributes {async}
// -----
%cst = arith.constant 1 : index
%value = memref.alloc() : memref<10xf32>
// expected-error@+1 {{wait attribute cannot appear with waitOperands}}
acc.enter_data wait(%cst: index) create(%value : memref<10xf32>) attributes {wait}
// -----
%cst = arith.constant 1 : index
%value = memref.alloc() : memref<10xf32>
// expected-error@+1 {{wait_devnum cannot appear without waitOperands}}
acc.enter_data wait_devnum(%cst: index) create(%value : memref<10xf32>)