My Project
core
osl
mobility
kingMobility.h
Go to the documentation of this file.
1
/* kingMobility.h
2
*/
3
#ifndef _KING_MOBILITY_H
4
#define _KING_MOBILITY_H
5
6
#include "
osl/basic_type.h
"
7
#include "
osl/container.h
"
8
#include "
osl/config.h
"
9
#include <cassert>
10
11
#ifndef OSL_USE_SSE
12
#if !(defined _MSC_VER) && ! defined OSL_NO_SSE
13
#define OSL_USE_SSE 1
14
#endif
15
#endif
16
17
namespace
osl
18
{
19
namespace
mobility
20
{
21
#if OSL_USE_SSE
22
typedef
long
long
v2di
__attribute__
((vector_size (16)));
23
#endif
24
class
KingMobility
{
25
union
b128
{
26
CArray<CArray<unsigned char,8>
,2>
uc16
;
27
unsigned
long
long
ul
[2];
28
#if OSL_USE_SSE
29
v2di
v2
;
30
#endif
31
}
v
32
#ifdef __GNUC__
33
__attribute__
((aligned(16)))
34
#endif
35
;
36
public
:
37
KingMobility
() {
38
assert(
reinterpret_cast<
size_t
>
(
this
) % 16 == 0);
39
}
40
const
CArray<unsigned char,8>
&
operator[]
(
Player
p)
const
{
41
return
v
.
uc16
[p];
42
}
43
CArray<unsigned char,8>
&
operator[]
(
Player
p){
44
return
v
.
uc16
[p];
45
}
46
KingMobility
&
operator=
(
KingMobility
const
& km){
47
#if OSL_USE_SSE
48
v
.
v2
=km.
v
.
v2
;
49
#else
50
v
.
uc16
=km.
v
.
uc16
;
51
#endif
52
return
*
this
;
53
}
54
bool
operator==
(
KingMobility
const
& km)
const
{
55
#if 0 && OSL_USE_SSE41
56
return
__builtin_ia32_ptestz128(
v
.
v2
,km.
v
.
v2
);
57
#else
58
return
((
v
.
ul
[0]^km.
v
.
ul
[0])|(
v
.
ul
[1]^km.
v
.
ul
[1]))==0;
59
#endif
60
}
61
};
62
}
63
using
mobility::KingMobility;
64
}
65
#endif
/* _KING_MOBILITY_H */
66
// ;;; Local Variables:
67
// ;;; mode:c++
68
// ;;; c-basic-offset:2
69
// ;;; End:
osl::mobility::KingMobility::operator==
bool operator==(KingMobility const &km) const
Definition:
kingMobility.h:54
osl::mobility::KingMobility::KingMobility
KingMobility()
Definition:
kingMobility.h:37
osl::mobility::KingMobility::b128::uc16
CArray< CArray< unsigned char, 8 >, 2 > uc16
Definition:
kingMobility.h:26
basic_type.h
osl::mobility::KingMobility::operator=
KingMobility & operator=(KingMobility const &km)
Definition:
kingMobility.h:46
osl::mobility::KingMobility::b128::v2
v2di v2
Definition:
kingMobility.h:29
osl::mobility::KingMobility::operator[]
const CArray< unsigned char, 8 > & operator[](Player p) const
Definition:
kingMobility.h:40
osl::mobility::KingMobility::b128
Definition:
kingMobility.h:25
osl::mobility::KingMobility::b128::ul
unsigned long long ul[2]
Definition:
kingMobility.h:27
container.h
osl::mobility::KingMobility
Definition:
kingMobility.h:24
osl::mobility::__attribute__
long long v2di __attribute__((vector_size(16)))
Definition:
kingMobility.h:22
osl::mobility::KingMobility::operator[]
CArray< unsigned char, 8 > & operator[](Player p)
Definition:
kingMobility.h:43
config.h
osl::Player
Player
Definition:
basic_type.h:8
osl::mobility::KingMobility::v
union osl::mobility::KingMobility::b128 v
osl::CArray
Definition:
container.h:20
osl
Definition:
additionalEffect.h:6
Generated by
1.8.18