#bound_map2 = (i)[s] -> (i + s, i - s)
// All maps appear in arbitrary order before all sets, in arbitrary order.
-// CHECK-EMPTY
+// CHECK-NOT: Placeholder
// CHECK-DAG: #set{{[0-9]+}} = (d0)[s0, s1] : (d0 >= 0, -d0 + s0 >= 0, s0 - 5 == 0, -d0 + s1 + 1 >= 0)
#set0 = (i)[N, M] : (i >= 0, -i + N >= 0, N - 5 == 0, -i + M + 1 >= 0)
// CHECK-LABEL: func @funcattrempty
func @funcattrempty() -> ()
- // CHECK-EMPTY
attributes {}
// CHECK-LABEL: func @funcattr
// CHECK-LABEL: func @funcattrwithblock
func @funcattrwithblock() -> ()
- // CHECK-EMPTY
attributes {} {
^bb0:
return
%idx0 = affine.apply (d0, d1) -> (d0)(%i, %j)
%idx1 = affine.apply (d0, d1) -> (d1)(%i, %j)
// Out of bound access.
- %x = load %A[%idx0, %idx1] : memref<9 x 9 x i32>
+ %x = load %A[%idx0, %idx1] : memref<9 x 9 x i32>
// expected-error@-1 {{'std.load' op memref out of upper bound access along dimension #1}}
// expected-error@-2 {{'std.load' op memref out of lower bound access along dimension #1}}
// expected-error@-3 {{'std.load' op memref out of upper bound access along dimension #2}}
%idy1 = affine.apply (d0, d1, d2) -> (d1 floordiv 4)(%i, %j, %j)
%idy2 = affine.apply (d0, d1, d2) -> (d2 ceildiv 4 - 1)(%i, %j, %j)
store %x, %A[%idy0, %idy1, %idy2] : memref<128 x 64 x 64 x i32> // expected-error {{'std.store' op memref out of lower bound access along dimension #3}}
- // CHECK-EMPTY
} // CHECK }
} // CHECK }
return