My Project
flip_sse.c File Reference
#include <x86intrin.h>

Functions

static __v2di flipmask (__v2di outflank)
 
static unsigned long long flip_A1 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_B1 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_C1 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_D1 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_E1 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_F1 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_G1 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_H1 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_A2 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_B2 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_C2 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_D2 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_E2 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_F2 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_G2 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_H2 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_A3 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_B3 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_C3 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_D3 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_E3 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_F3 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_G3 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_H3 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_A4 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_B4 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_C4 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_D4 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_E4 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_F4 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_G4 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_H4 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_A5 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_B5 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_C5 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_D5 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_E5 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_F5 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_G5 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_H5 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_A6 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_B6 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_C6 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_D6 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_E6 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_F6 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_G6 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_H6 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_A7 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_B7 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_C7 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_D7 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_E7 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_F7 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_G7 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_H7 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_A8 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_B8 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_C8 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_D8 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_E8 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_F8 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_G8 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_H8 (const unsigned long long P, const unsigned long long O)
 
static unsigned long long flip_pass (const unsigned long long P, const unsigned long long O)
 

Variables

static const unsigned char OUTFLANK_2 [64]
 
static const unsigned char OUTFLANK_3 [64]
 
static const unsigned char OUTFLANK_4 [64]
 
static const unsigned char OUTFLANK_5 [64]
 
static const unsigned char OUTFLANK_7 [64]
 
static const unsigned char CONTIG_UP [64]
 
static const unsigned char CONTIG_UPLEFT [64]
 
static const unsigned char CONTIG_UPRIGHT [64]
 
static const unsigned long long FLIPPED_2_H [130]
 
static const unsigned long long FLIPPED_3_H [131]
 
static const unsigned long long FLIPPED_4_H [133]
 
static const unsigned long long FLIPPED_5_H [137]
 
static const unsigned long long FLIPPED_3_V [131]
 
static const unsigned long long FLIPPED_4_V [133]
 
static const unsigned long long FLIPPED_5_V [137]
 
static const unsigned long long FLIPPED_3_U [131]
 
unsigned long long(* flip [])(const unsigned long long, const unsigned long long)
 

Detailed Description

This module deals with flipping discs.

A function is provided for each square of the board. These functions are gathered into an array of functions, so that a fast access to each function is allowed. The generic form of the function take as input the player and the opponent bitboards and return the flipped squares into a bitboard.

Given the following notation:

  • x = square where we play,
  • P = player's disc pattern,
  • O = opponent's disc pattern, the basic principle is to read into an array the result of a move. Doing this is easier for a single line ; so we can use arrays of the form:
  • ARRAY[x][8-bits disc pattern]. The problem is thus to convert any line of a 64-bits disc pattern into an 8-bits disc pattern. A fast way to do this is to select the right line, with a bit-mask, to gather the masked-bits into a continuous set by a simple multiplication and to right-shift the result to scale it into a number between 0 and 255. Once we get our 8-bits disc patterns,a first array (OUTFLANK) is used to get the player's discs that surround the opponent discs:
  • outflank = OUTFLANK[x][O] & P (Only inner 6-bits of the P are in interest here.) The result is then used as an index to access a second array giving the flipped discs according to the surrounding player's discs:
  • flipped = FLIPPED[x][outflank]. (Flipped discs fall into inner 6-bits.) Finally, a precomputed array transform the inner 6-bits disc pattern back into a 64-bits disc pattern, and the flipped squares for each line are gathered and returned to generate moves.

If the OUTFLANK search is in LSB to MSB direction, carry propagation can be used to determine contiguous opponent discs. If the OUTFLANK search is in MSB to LSB direction, CONTIG_X tables are used to determine coutiguous opponent discs.

Date
1998 - 2017
Author
Richard Delorme
Toshihiko Okuhara
Version
4.4

Function Documentation

◆ flip_A1()

static unsigned long long flip_A1 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square A1.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_A2()

static unsigned long long flip_A2 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square A2.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_A3()

static unsigned long long flip_A3 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square A3.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_A4()

static unsigned long long flip_A4 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square A4.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_A5()

static unsigned long long flip_A5 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square A5.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_A6()

static unsigned long long flip_A6 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square A6.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_A7()

static unsigned long long flip_A7 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square A7.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_A8()

static unsigned long long flip_A8 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square A8.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_B1()

static unsigned long long flip_B1 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square B1.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_B2()

static unsigned long long flip_B2 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square B2.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_B3()

static unsigned long long flip_B3 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square B3.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_B4()

static unsigned long long flip_B4 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square B4.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_B5()

static unsigned long long flip_B5 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square B5.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_B6()

static unsigned long long flip_B6 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square B6.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_B7()

static unsigned long long flip_B7 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square B7.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_B8()

static unsigned long long flip_B8 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square B8.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_C1()

static unsigned long long flip_C1 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square C1.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_C2()

static unsigned long long flip_C2 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square C2.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_C3()

static unsigned long long flip_C3 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square C3.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_C4()

static unsigned long long flip_C4 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square C4.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_C5()

static unsigned long long flip_C5 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square C5.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_C6()

static unsigned long long flip_C6 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square C6.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_C7()

static unsigned long long flip_C7 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square C7.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_C8()

static unsigned long long flip_C8 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square C8.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_D1()

static unsigned long long flip_D1 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square D1.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_D2()

static unsigned long long flip_D2 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square D2.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_D3()

static unsigned long long flip_D3 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square D3.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_D4()

static unsigned long long flip_D4 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square D4.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_D5()

static unsigned long long flip_D5 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square D5.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_D6()

static unsigned long long flip_D6 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square D6.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_D7()

static unsigned long long flip_D7 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square D7.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_D8()

static unsigned long long flip_D8 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square D8.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_E1()

static unsigned long long flip_E1 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square E1.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_E2()

static unsigned long long flip_E2 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square E2.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_E3()

static unsigned long long flip_E3 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square E3.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_E4()

static unsigned long long flip_E4 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square E3.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_E5()

static unsigned long long flip_E5 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square E5.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_E6()

static unsigned long long flip_E6 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square E6.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_E7()

static unsigned long long flip_E7 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square E7.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_E8()

static unsigned long long flip_E8 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square E8.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_F1()

static unsigned long long flip_F1 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square F1.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_F2()

static unsigned long long flip_F2 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square F2.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_F3()

static unsigned long long flip_F3 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square F3.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_F4()

static unsigned long long flip_F4 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square F4.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_F5()

static unsigned long long flip_F5 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square F5.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_F6()

static unsigned long long flip_F6 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square F6.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_F7()

static unsigned long long flip_F7 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square F7.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_F8()

static unsigned long long flip_F8 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square F8.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_G1()

static unsigned long long flip_G1 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square G1.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_G2()

static unsigned long long flip_G2 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square G2.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_G3()

static unsigned long long flip_G3 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square G3.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_G4()

static unsigned long long flip_G4 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square G4.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_G5()

static unsigned long long flip_G5 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square G5.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_G6()

static unsigned long long flip_G6 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square G6.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_G7()

static unsigned long long flip_G7 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square G7.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_G8()

static unsigned long long flip_G8 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square G8.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_H1()

static unsigned long long flip_H1 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square H1.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_H2()

static unsigned long long flip_H2 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square H2.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_H3()

static unsigned long long flip_H3 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square H3.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_H4()

static unsigned long long flip_H4 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square H4.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_H5()

static unsigned long long flip_H5 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square H5.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_H6()

static unsigned long long flip_H6 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square H6.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_H7()

static unsigned long long flip_H7 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square H7.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_H8()

static unsigned long long flip_H8 ( const unsigned long long P,
const unsigned long long O )
static

Compute flipped discs when playing on square H8.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flip_pass()

static unsigned long long flip_pass ( const unsigned long long P,
const unsigned long long O )
static

Compute (zero-) flipped discs when plassing.

Parameters
Pplayer's disc pattern.
Oopponent's disc pattern.
Returns
flipped disc pattern.

◆ flipmask()

static __v2di flipmask ( __v2di outflank)
inlinestatic

Make inverted flip mask if opponent's disc are surrounded by player's.

0xffffffffffffffffULL if outflank is 0 0xffffffff00000000ULL if a 1 is in lower 32 bit 0x0000000000000000ULL if a 1 is in higher 32 bit

Variable Documentation

◆ CONTIG_UP

const unsigned char CONTIG_UP[64]
static
Initial value:
= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
16, 16, 16, 16, 16, 16, 16, 16, 24, 24, 24, 24, 32, 32, 40, 48
}

◆ CONTIG_UPLEFT

const unsigned char CONTIG_UPLEFT[64]
static
Initial value:
= {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
18, 18, 18, 18, 18, 18, 18, 18, 27, 27, 27, 27, 36, 36, 45, 54
}

◆ CONTIG_UPRIGHT

const unsigned char CONTIG_UPRIGHT[64]
static
Initial value:
= {
0, 7, 0, 14, 0, 7, 0, 21, 0, 7, 0, 14, 0, 7, 0, 28,
0, 7, 0, 14, 0, 7, 0, 21, 0, 7, 0, 14, 0, 7, 0, 35,
0, 7, 0, 14, 0, 7, 0, 21, 0, 7, 0, 14, 0, 7, 0, 28,
0, 7, 0, 14, 0, 7, 0, 21, 0, 7, 0, 14, 0, 7, 0, 42
}

◆ flip

unsigned long long(* flip[])(const unsigned long long, const unsigned long long) ( const unsigned long long ,
const unsigned long long  )
Initial value:
= {
}
static unsigned long long flip_A1(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:312
static unsigned long long flip_D3(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:824
static unsigned long long flip_E2(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:639
static unsigned long long flip_E7(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1700
static unsigned long long flip_F3(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:882
static unsigned long long flip_D5(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1260
static unsigned long long flip_pass(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1992
static unsigned long long flip_G5(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1340
static unsigned long long flip_A2(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:530
static unsigned long long flip_B3(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:773
static unsigned long long flip_B4(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:988
static unsigned long long flip_E4(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1073
static unsigned long long flip_F7(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1725
static unsigned long long flip_C2(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:582
static unsigned long long flip_D8(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1869
static unsigned long long flip_G6(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1550
static unsigned long long flip_A6(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1388
static unsigned long long flip_A3(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:748
static unsigned long long flip_B1(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:338
static unsigned long long flip_H6(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1577
static unsigned long long flip_B6(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1416
static unsigned long long flip_E1(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:421
static unsigned long long flip_A4(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:960
static unsigned long long flip_B5(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1210
static unsigned long long flip_B7(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1627
static unsigned long long flip_D7(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1675
static unsigned long long flip_C5(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1234
static unsigned long long flip_D6(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1470
static unsigned long long flip_C1(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:364
static unsigned long long flip_H2(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:722
static unsigned long long flip_E3(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:853
static unsigned long long flip_E5(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1287
static unsigned long long flip_F2(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:668
static unsigned long long flip_C8(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1844
static unsigned long long flip_C3(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:798
static unsigned long long flip_G4(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1130
static unsigned long long flip_D2(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:610
static unsigned long long flip_H3(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:934
static unsigned long long flip_H4(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1158
static unsigned long long flip_F8(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1919
static unsigned long long flip_D1(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:392
static unsigned long long flip_H1(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:504
static unsigned long long flip_F1(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:450
static unsigned long long flip_A5(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1186
static unsigned long long flip_F6(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1524
static unsigned long long flip_B2(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:556
static unsigned long long flip_G1(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:478
static unsigned long long flip_F5(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1314
static unsigned long long flip_G3(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:908
static unsigned long long flip_G8(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1944
static unsigned long long flip_C4(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1016
static unsigned long long flip_H7(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1774
static unsigned long long flip_H8(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1968
static unsigned long long flip_H5(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1364
static unsigned long long flip_G2(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:696
static unsigned long long flip_A8(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1798
static unsigned long long flip_B8(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1821
static unsigned long long flip_C6(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1444
static unsigned long long flip_C7(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1650
static unsigned long long flip_D4(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1046
static unsigned long long flip_A7(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1604
static unsigned long long flip_F4(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1100
static unsigned long long flip_G7(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1750
static unsigned long long flip_E8(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1894
static unsigned long long flip_E6(const unsigned long long P, const unsigned long long O)
Definition flip_sse.c:1497

Array of functions to compute flipped discs

◆ FLIPPED_2_H

const unsigned long long FLIPPED_2_H[130]
static
Initial value:
= {
0x0000000000000000ULL, 0x0202020202020202ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0808080808080808ULL, 0x0a0a0a0a0a0a0a0aULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x1818181818181818ULL, 0x1a1a1a1a1a1a1a1aULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x3838383838383838ULL, 0x3a3a3a3a3a3a3a3aULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x7878787878787878ULL, 0x7a7a7a7a7a7a7a7aULL
}

flip array (indexed with outflank, returns inner 6 bits)

◆ FLIPPED_3_H

const unsigned long long FLIPPED_3_H[131]
static
Initial value:
= {
0x0000000000000000ULL, 0x0606060606060606ULL, 0x0404040404040404ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x1010101010101010ULL, 0x1616161616161616ULL, 0x1414141414141414ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x3030303030303030ULL, 0x3636363636363636ULL, 0x3434343434343434ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x7070707070707070ULL, 0x7676767676767676ULL, 0x7474747474747474ULL
}

◆ FLIPPED_3_U

const unsigned long long FLIPPED_3_U[131]
static
Initial value:
= {
0x0000000000000000ULL, 0x00ffff0000000000ULL, 0x0000ff0000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x00000000ff000000ULL, 0x00ffff00ff000000ULL, 0x0000ff00ff000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x00000000ffff0000ULL, 0x00ffff00ffff0000ULL, 0x0000ff00ffff0000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x00000000ffffff00ULL, 0x00ffff00ffffff00ULL, 0x0000ff00ffffff00ULL
}

◆ FLIPPED_3_V

const unsigned long long FLIPPED_3_V[131]
static
Initial value:
= {
0x0000000000000000ULL, 0x0000000000ffff00ULL, 0x0000000000ff0000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x000000ff00000000ULL, 0x000000ff00ffff00ULL, 0x000000ff00ff0000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000ffff00000000ULL, 0x0000ffff00ffff00ULL, 0x0000ffff00ff0000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x00ffffff00000000ULL, 0x00ffffff00ffff00ULL, 0x00ffffff00ff0000ULL
}

◆ FLIPPED_4_H

const unsigned long long FLIPPED_4_H[133]
static
Initial value:
= {
0x0000000000000000ULL, 0x0e0e0e0e0e0e0e0eULL, 0x0c0c0c0c0c0c0c0cULL, 0x0000000000000000ULL, 0x0808080808080808ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x2020202020202020ULL, 0x2e2e2e2e2e2e2e2eULL, 0x2c2c2c2c2c2c2c2cULL, 0x0000000000000000ULL, 0x2828282828282828ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x6060606060606060ULL, 0x6e6e6e6e6e6e6e6eULL, 0x6c6c6c6c6c6c6c6cULL, 0x0000000000000000ULL, 0x6868686868686868ULL
}

◆ FLIPPED_4_V

const unsigned long long FLIPPED_4_V[133]
static
Initial value:
= {
0x0000000000000000ULL, 0x00000000ffffff00ULL, 0x00000000ffff0000ULL, 0x0000000000000000ULL, 0x00000000ff000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000ff0000000000ULL, 0x0000ff00ffffff00ULL, 0x0000ff00ffff0000ULL, 0x0000000000000000ULL, 0x0000ff00ff000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x00ffff0000000000ULL, 0x00ffff00ffffff00ULL, 0x00ffff00ffff0000ULL, 0x0000000000000000ULL, 0x00ffff00ff000000ULL
}

◆ FLIPPED_5_H

const unsigned long long FLIPPED_5_H[137]
static
Initial value:
= {
0x0000000000000000ULL, 0x1e1e1e1e1e1e1e1eULL, 0x1c1c1c1c1c1c1c1cULL, 0x0000000000000000ULL, 0x1818181818181818ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x1010101010101010ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x4040404040404040ULL, 0x5e5e5e5e5e5e5e5eULL, 0x5c5c5c5c5c5c5c5cULL, 0x0000000000000000ULL, 0x5858585858585858ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x5050505050505050ULL
}

◆ FLIPPED_5_V

const unsigned long long FLIPPED_5_V[137]
static
Initial value:
= {
0x0000000000000000ULL, 0x000000ffffffff00ULL, 0x000000ffffff0000ULL, 0x0000000000000000ULL, 0x000000ffff000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x000000ff00000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x00ff000000000000ULL, 0x00ff00ffffffff00ULL, 0x00ff00ffffff0000ULL, 0x0000000000000000ULL, 0x00ff00ffff000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL,
0x00ff00ff00000000ULL
}

◆ OUTFLANK_2

const unsigned char OUTFLANK_2[64]
static
Initial value:
= {
0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x21, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x41, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x21, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x81, 0x00, 0x00
}

outflank array (indexed with inner 6 bits)

◆ OUTFLANK_3

const unsigned char OUTFLANK_3[64]
static
Initial value:
= {
0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x42, 0x41, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x82, 0x81, 0x00, 0x00, 0x00, 0x00
}

◆ OUTFLANK_4

const unsigned char OUTFLANK_4[64]
static
Initial value:
= {
0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0x40, 0x40, 0x40, 0x44, 0x44, 0x42, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x80, 0x80, 0x80, 0x84, 0x84, 0x82, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}

◆ OUTFLANK_5

const unsigned char OUTFLANK_5[64]
static
Initial value:
= {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x88, 0x88, 0x88, 0x88, 0x84, 0x84, 0x82, 0x81,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}

◆ OUTFLANK_7

const unsigned char OUTFLANK_7[64]
static
Initial value:
= {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01
}