diff options
Diffstat (limited to 'mlir/test')
| -rw-r--r-- | mlir/test/EDSC/builder-api-test.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/mlir/test/EDSC/builder-api-test.cpp b/mlir/test/EDSC/builder-api-test.cpp index 386d744ef32..f4c04eeb7fb 100644 --- a/mlir/test/EDSC/builder-api-test.cpp +++ b/mlir/test/EDSC/builder-api-test.cpp @@ -714,6 +714,38 @@ TEST_FUNC(indirect_access) { f.erase(); } +// Exercise affine loads and stores build with empty maps. +TEST_FUNC(empty_map_load_store) { + using namespace edsc; + using namespace edsc::intrinsics; + using namespace edsc::op; + auto memrefType = + MemRefType::get({}, FloatType::getF32(&globalContext()), {}, 0); + auto f = makeFunction("empty_map_load_store", {}, + {memrefType, memrefType, memrefType, memrefType}); + + OpBuilder builder(f.getBody()); + ScopedContext scope(builder, f.getLoc()); + ValueHandle zero = constant_index(0); + ValueHandle one = constant_index(1); + IndexedValue input(f.getArgument(0)), res(f.getArgument(1)); + IndexHandle iv; + + // clang-format off + LoopBuilder(&iv, zero, one, 1)([&]{ + res() = input(); + }); + // clang-format on + + // clang-format off + // CHECK-LABEL: func @empty_map_load_store( + // CHECK: [[A:%.*]] = affine.load %{{.*}}[] + // CHECK: affine.store [[A]], %{{.*}}[] + // clang-format on + f.print(llvm::outs()); + f.erase(); +} + int main() { RUN_TESTS(); return 0; |

