1*8d5c1b45SFelix Schneider //===- StridedMemRef.cpp ----------------------------------------*- C++ -*-===//
2*8d5c1b45SFelix Schneider //
3*8d5c1b45SFelix Schneider // This file is licensed under the Apache License v2.0 with LLVM Exceptions.
4*8d5c1b45SFelix Schneider // See https://llvm.org/LICENSE.txt for license information.
5*8d5c1b45SFelix Schneider // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*8d5c1b45SFelix Schneider //
7*8d5c1b45SFelix Schneider //===----------------------------------------------------------------------===//
8*8d5c1b45SFelix Schneider
9*8d5c1b45SFelix Schneider #include "mlir/ExecutionEngine/CRunnerUtils.h"
10*8d5c1b45SFelix Schneider #include "llvm/ADT/SmallVector.h"
11*8d5c1b45SFelix Schneider
12*8d5c1b45SFelix Schneider #include "gmock/gmock.h"
13*8d5c1b45SFelix Schneider
14*8d5c1b45SFelix Schneider using namespace ::mlir;
15*8d5c1b45SFelix Schneider using namespace ::testing;
16*8d5c1b45SFelix Schneider
TEST(StridedMemRef,rankOneWithOffset)17*8d5c1b45SFelix Schneider TEST(StridedMemRef, rankOneWithOffset) {
18*8d5c1b45SFelix Schneider std::array<int, 15> data;
19*8d5c1b45SFelix Schneider
20*8d5c1b45SFelix Schneider for (size_t i = 0; i < data.size(); ++i) {
21*8d5c1b45SFelix Schneider data[i] = i;
22*8d5c1b45SFelix Schneider }
23*8d5c1b45SFelix Schneider
24*8d5c1b45SFelix Schneider StridedMemRefType<int, 1> memRefA;
25*8d5c1b45SFelix Schneider memRefA.basePtr = data.data();
26*8d5c1b45SFelix Schneider memRefA.data = data.data();
27*8d5c1b45SFelix Schneider memRefA.offset = 0;
28*8d5c1b45SFelix Schneider memRefA.sizes[0] = 10;
29*8d5c1b45SFelix Schneider memRefA.strides[0] = 1;
30*8d5c1b45SFelix Schneider
31*8d5c1b45SFelix Schneider StridedMemRefType<int, 1> memRefB = memRefA;
32*8d5c1b45SFelix Schneider memRefB.offset = 5;
33*8d5c1b45SFelix Schneider
34*8d5c1b45SFelix Schneider llvm::SmallVector<int, 10> valuesA(memRefA.begin(), memRefA.end());
35*8d5c1b45SFelix Schneider llvm::SmallVector<int, 10> valuesB(memRefB.begin(), memRefB.end());
36*8d5c1b45SFelix Schneider
37*8d5c1b45SFelix Schneider for (int64_t i = 0; i < 10; ++i) {
38*8d5c1b45SFelix Schneider EXPECT_EQ(valuesA[i], i);
39*8d5c1b45SFelix Schneider EXPECT_EQ(valuesA[i] + 5, valuesB[i]);
40*8d5c1b45SFelix Schneider }
41*8d5c1b45SFelix Schneider }
42