aboutsummaryrefslogtreecommitdiff
path: root/mlir/unittests/ExecutionEngine/StridedMemRef.cpp
blob: f5ffcc8fc911f10c67542f5b6afccae82302d346 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//===- StridedMemRef.cpp ----------------------------------------*- C++ -*-===//
//
// This file is licensed under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#include "mlir/ExecutionEngine/CRunnerUtils.h"
#include "llvm/ADT/SmallVector.h"

#include "gmock/gmock.h"

using namespace ::mlir;
using namespace ::testing;

TEST(StridedMemRef, rankOneWithOffset) {
  std::array<int, 15> data;

  for (size_t i = 0; i < data.size(); ++i) {
    data[i] = i;
  }

  StridedMemRefType<int, 1> memRefA;
  memRefA.basePtr = data.data();
  memRefA.data = data.data();
  memRefA.offset = 0;
  memRefA.sizes[0] = 10;
  memRefA.strides[0] = 1;

  StridedMemRefType<int, 1> memRefB = memRefA;
  memRefB.offset = 5;

  llvm::SmallVector<int, 10> valuesA(memRefA.begin(), memRefA.end());
  llvm::SmallVector<int, 10> valuesB(memRefB.begin(), memRefB.end());

  for (int64_t i = 0; i < 10; ++i) {
    EXPECT_EQ(valuesA[i], i);
    EXPECT_EQ(valuesA[i] + 5, valuesB[i]);
  }
}