OpenCores
URL https://opencores.org/ocsvn/s80186/s80186/trunk

Subversion Repositories s80186

[/] [s80186/] [trunk/] [tests/] [instructions/] [Arithmetic.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 jamieiles
// Copyright Jamie Iles, 2017
2
//
3
// This file is part of s80x86.
4
//
5
// s80x86 is free software: you can redistribute it and/or modify
6
// it under the terms of the GNU General Public License as published by
7
// the Free Software Foundation, either version 3 of the License, or
8
// (at your option) any later version.
9
//
10
// s80x86 is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
// GNU General Public License for more details.
14
//
15
// You should have received a copy of the GNU General Public License
16
// along with s80x86.  If not, see <http://www.gnu.org/licenses/>.
17
 
18
#pragma once
19
 
20
#include <gtest/gtest.h>
21
 
22
#include "EmulateFixture.h"
23
 
24
template <typename T>
25
struct ArithmeticTest {
26
    T v1;
27
    T v2;
28
    T expected;
29
    uint16_t expected_flags;
30
    uint16_t carry_set;
31
};
32
 
33
using Arith8Params =
34
    std::pair<const std::vector<uint8_t>,
35
              const std::vector<struct ArithmeticTest<uint8_t>>>;
36
using Arith16Params =
37
    std::pair<const std::vector<uint8_t>,
38
              const std::vector<struct ArithmeticTest<uint16_t>>>;
39
 
40
template <typename T>
41
struct ArithmeticImmediateTest {
42
    T v1;
43
    T expected;
44
    uint16_t expected_flags;
45
    bool carry_set;
46
};
47
 
48
using ArithImmed8Params =
49
    std::pair<const std::vector<uint8_t>,
50
              const struct ArithmeticImmediateTest<uint8_t>>;
51
using ArithImmed16Params =
52
    std::pair<const std::vector<uint8_t>,
53
              const struct ArithmeticImmediateTest<uint16_t>>;
54
 
55
class ArithmeticRegReg8Test : public EmulateFixture,
56
                              public ::testing::WithParamInterface<Arith8Params>
57
{
58
};
59
 
60
class ArithmeticMemReg8Test : public EmulateFixture,
61
                              public ::testing::WithParamInterface<Arith8Params>
62
{
63
};
64
 
65
class ArithmeticRegReg8TestReversed
66
    : public EmulateFixture,
67
      public ::testing::WithParamInterface<Arith8Params>
68
{
69
};
70
 
71
class ArithmeticRegReg8TestReversedNoResult
72
    : public EmulateFixture,
73
      public ::testing::WithParamInterface<Arith8Params>
74
{
75
};
76
 
77
class ArithmeticMemReg8TestReversed
78
    : public EmulateFixture,
79
      public ::testing::WithParamInterface<Arith8Params>
80
{
81
};
82
 
83
class ArithmeticMemReg8TestReversedNoResult
84
    : public EmulateFixture,
85
      public ::testing::WithParamInterface<Arith8Params>
86
{
87
};
88
 
89
class ArithmeticRegReg16Test
90
    : public EmulateFixture,
91
      public ::testing::WithParamInterface<Arith16Params>
92
{
93
};
94
 
95
class ArithmeticRegMem16Test
96
    : public EmulateFixture,
97
      public ::testing::WithParamInterface<Arith16Params>
98
{
99
};
100
 
101
class ArithmeticRegReg16TestReversed
102
    : public EmulateFixture,
103
      public ::testing::WithParamInterface<Arith16Params>
104
{
105
};
106
 
107
class ArithmeticMemReg16TestReversed
108
    : public EmulateFixture,
109
      public ::testing::WithParamInterface<Arith16Params>
110
{
111
};
112
 
113
class ArithmeticRegReg16TestReversedNoResult
114
    : public EmulateFixture,
115
      public ::testing::WithParamInterface<Arith16Params>
116
{
117
};
118
 
119
class ArithmeticMemReg16TestReversedNoResult
120
    : public EmulateFixture,
121
      public ::testing::WithParamInterface<Arith16Params>
122
{
123
};
124
 
125
class ArithmeticRegImmed8Test
126
    : public EmulateFixture,
127
      public ::testing::WithParamInterface<ArithImmed8Params>
128
{
129
};
130
 
131
class ArithmeticMemImmed8Test
132
    : public EmulateFixture,
133
      public ::testing::WithParamInterface<ArithImmed8Params>
134
{
135
};
136
 
137
class ArithmeticRegImmed16Test
138
    : public EmulateFixture,
139
      public ::testing::WithParamInterface<ArithImmed16Params>
140
{
141
};
142
 
143
class ArithmeticMemImmed16Test
144
    : public EmulateFixture,
145
      public ::testing::WithParamInterface<ArithImmed16Params>
146
{
147
};
148
 
149
class ArithmeticRegImmed16TestExtend
150
    : public EmulateFixture,
151
      public ::testing::WithParamInterface<ArithImmed16Params>
152
{
153
};
154
 
155
class ArithmeticMemImmed16TestExtend
156
    : public EmulateFixture,
157
      public ::testing::WithParamInterface<ArithImmed16Params>
158
{
159
};
160
 
161
class ArithmeticAlImmedTest
162
    : public EmulateFixture,
163
      public ::testing::WithParamInterface<ArithImmed8Params>
164
{
165
};
166
 
167
class ArithmeticAxImmedTest
168
    : public EmulateFixture,
169
      public ::testing::WithParamInterface<ArithImmed16Params>
170
{
171
};

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.