aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: e519df9203b852794fc63c616cb4e00f457b82f9 (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
# Prototype for a new optimal solver

Work in progress.

## Running tests

```
$ ./configure.sh # Run 'TYPE=AVX2 ./configure.sh' to use AVX2 instead
$ make test
```

## TODO:

### Tests

* inverse_move
* inverse_trans

### AVX2

* fix base get_ and set_ macros (constant arguments?)
* implement missing stuff (moves, transform)
* optimize things that use get_ and set_

### More features

* coordinates: co, eo, epsep, cpsep_sym, cocpsep_sym, cphtr_sym, cocphtr_sym
* pruning tables (1 bit per entry + fallback)
* solve.c

### Optimizations:

* multi-move (up to 4/5 moves at once)

### Things I need to learn:

* Use AVX2 instructions, in particular
  [_mm256_shuffle_epi8](https://www.intel.com/content/www/us/en/docs/cpp-compiler/developer-guide-reference/2021-10/mm256-shuffle-epi8.html))
* Inspect compiled assembly
* Use valgrind tool cachegrind and other profiling tools

Generated with cgit - Back to sebastiano.tronto.net