diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2023-11-02 22:17:14 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2023-11-02 22:17:14 +0100 |
| commit | 9b1c9371333e20611ec5422e660ebec7e66c4261 (patch) | |
| tree | 4d0d0dbb27056871ab7c81c2903899e4e639b566 /src/_moves_avx2.c | |
| parent | a61382e9dec22ea1ff3fea2d59d3c605c0aa2aac (diff) | |
| download | nissy-core-9b1c9371333e20611ec5422e660ebec7e66c4261.tar.gz nissy-core-9b1c9371333e20611ec5422e660ebec7e66c4261.zip | |
Added avx2 moves
Diffstat (limited to 'src/_moves_avx2.c')
| -rw-r--r-- | src/_moves_avx2.c | 199 |
1 files changed, 197 insertions, 2 deletions
diff --git a/src/_moves_avx2.c b/src/_moves_avx2.c index d72f45f..0c1f6a3 100644 --- a/src/_moves_avx2.c +++ b/src/_moves_avx2.c | |||
| @@ -1,2 +1,197 @@ | |||
| 1 | /* TODO: return compose(c, (some avx garbage)); | 1 | static inline cube_t |
| 2 | */ | 2 | inline_move_U(cube_t c) |
| 3 | { | ||
| 4 | cube_t m = _mm256_set_epi8( | ||
| 5 | 0, 0, 0, 0, 11, 10, 9, 8, 7, 6, 0, 1, 3, 2, 5, 4, | ||
| 6 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 1, 0, 3, 2, 4, 5 | ||
| 7 | ); | ||
| 8 | |||
| 9 | return _mm256_shuffle_epi8(c, m); | ||
| 10 | } | ||
| 11 | |||
| 12 | static inline cube_t | ||
| 13 | inline_move_U2(cube_t c) | ||
| 14 | { | ||
| 15 | cube_t m = _mm256_set_epi8( | ||
| 16 | 0, 0, 0, 0, 11, 10, 9, 8, 7, 6, 4, 5, 3, 2, 0, 1, | ||
| 17 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 4, 5, 3, 2, 0, 1 | ||
| 18 | ); | ||
| 19 | |||
| 20 | return _mm256_shuffle_epi8(c, m); | ||
| 21 | } | ||
| 22 | |||
| 23 | static inline cube_t | ||
| 24 | inline_move_U3(cube_t c) | ||
| 25 | { | ||
| 26 | cube_t m = _mm256_set_epi8( | ||
| 27 | 0, 0, 0, 0, 11, 10, 9, 8, 7, 6, 1, 0, 3, 2, 4, 5, | ||
| 28 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 0, 1, 3, 2, 5, 4 | ||
| 29 | ); | ||
| 30 | |||
| 31 | return _mm256_shuffle_epi8(c, m); | ||
| 32 | } | ||
| 33 | |||
| 34 | static inline cube_t | ||
| 35 | inline_move_D(cube_t c) | ||
| 36 | { | ||
| 37 | cube_t m = _mm256_set_epi8( | ||
| 38 | 0, 0, 0, 0, 11, 10, 9, 8, 3, 2, 5, 4, 6, 7, 1, 0, | ||
| 39 | 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, 4, 6, 7, 1, 0 | ||
| 40 | ); | ||
| 41 | |||
| 42 | return _mm256_shuffle_epi8(c, m); | ||
| 43 | } | ||
| 44 | |||
| 45 | static inline cube_t | ||
| 46 | inline_move_D2(cube_t c) | ||
| 47 | { | ||
| 48 | cube_t m = _mm256_set_epi8( | ||
| 49 | 0, 0, 0, 0, 11, 10, 9, 8, 6, 7, 5, 4, 2, 3, 1, 0, | ||
| 50 | 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 5, 4, 2, 3, 1, 0 | ||
| 51 | ); | ||
| 52 | |||
| 53 | return _mm256_shuffle_epi8(c, m); | ||
| 54 | } | ||
| 55 | |||
| 56 | static inline cube_t | ||
| 57 | inline_move_D3(cube_t c) | ||
| 58 | { | ||
| 59 | cube_t m = _mm256_set_epi8( | ||
| 60 | 0, 0, 0, 0, 11, 10, 9, 8, 2, 3, 5, 4, 7, 6, 1, 0, | ||
| 61 | 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 5, 4, 7, 6, 1, 0 | ||
| 62 | ); | ||
| 63 | |||
| 64 | return _mm256_shuffle_epi8(c, m); | ||
| 65 | } | ||
| 66 | |||
| 67 | static inline cube_t | ||
| 68 | inline_move_R(cube_t c) | ||
| 69 | { | ||
| 70 | cube_t m = _mm256_set_epi8( | ||
| 71 | 0, 0, 0, 0, 4, 10, 9, 7, 11, 6, 5, 8, 3, 2, 1, 0, | ||
| 72 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 35, 32, 4, 69, 2, 1, 70 | ||
| 73 | ); | ||
| 74 | |||
| 75 | return compose(c, m); | ||
| 76 | } | ||
| 77 | |||
| 78 | static inline cube_t | ||
| 79 | inline_move_R2(cube_t c) | ||
| 80 | { | ||
| 81 | cube_t m = _mm256_set_epi8( | ||
| 82 | 0, 0, 0, 0, 8, 10, 9, 11, 4, 6, 5, 7, 3, 2, 1, 0, | ||
| 83 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 5, 6, 4, 0, 2, 1, 3 | ||
| 84 | ); | ||
| 85 | |||
| 86 | return _mm256_shuffle_epi8(c, m); | ||
| 87 | } | ||
| 88 | |||
| 89 | static inline cube_t | ||
| 90 | inline_move_R3(cube_t c) | ||
| 91 | { | ||
| 92 | cube_t m = _mm256_set_epi8( | ||
| 93 | 0, 0, 0, 0, 7, 10, 9, 4, 8, 6, 5, 11, 3, 2, 1, 0, | ||
| 94 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 32, 35, 4, 70, 2, 1, 69 | ||
| 95 | ); | ||
| 96 | |||
| 97 | return compose(c, m); | ||
| 98 | } | ||
| 99 | |||
| 100 | static inline cube_t | ||
| 101 | inline_move_L(cube_t c) | ||
| 102 | { | ||
| 103 | cube_t m = _mm256_set_epi8( | ||
| 104 | 0, 0, 0, 0, 11, 6, 5, 8, 7, 9, 10, 4, 3, 2, 1, 0, | ||
| 105 | 0, 0, 0, 0, 0, 0, 0, 0, 34, 6, 5, 33, 3, 68, 71, 0 | ||
| 106 | ); | ||
| 107 | |||
| 108 | return compose(c, m); | ||
| 109 | } | ||
| 110 | |||
| 111 | static inline cube_t | ||
| 112 | inline_move_L2(cube_t c) | ||
| 113 | { | ||
| 114 | cube_t m = _mm256_set_epi8( | ||
| 115 | 0, 0, 0, 0, 11, 9, 10, 8, 7, 5, 6, 4, 3, 2, 1, 0, | ||
| 116 | 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 5, 7, 3, 1, 2, 0 | ||
| 117 | ); | ||
| 118 | |||
| 119 | return _mm256_shuffle_epi8(c, m); | ||
| 120 | } | ||
| 121 | |||
| 122 | static inline cube_t | ||
| 123 | inline_move_L3(cube_t c) | ||
| 124 | { | ||
| 125 | cube_t m = _mm256_set_epi8( | ||
| 126 | 0, 0, 0, 0, 11, 5, 6, 8, 7, 10, 9, 4, 3, 2, 1, 0, | ||
| 127 | 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 5, 34, 3, 71, 68, 0 | ||
| 128 | ); | ||
| 129 | |||
| 130 | return compose(c, m); | ||
| 131 | } | ||
| 132 | |||
| 133 | static inline cube_t | ||
| 134 | inline_move_F(cube_t c) | ||
| 135 | { | ||
| 136 | cube_t m = _mm256_set_epi8( | ||
| 137 | 0, 0, 0, 0, 11, 10, 19, 16, 7, 6, 5, 4, 24, 2, 1, 25, | ||
| 138 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 64, 5, 66, 3, 38, 1, 36 | ||
| 139 | ); | ||
| 140 | |||
| 141 | return compose(c, m); | ||
| 142 | } | ||
| 143 | |||
| 144 | static inline cube_t | ||
| 145 | inline_move_F2(cube_t c) | ||
| 146 | { | ||
| 147 | cube_t m = _mm256_set_epi8( | ||
| 148 | 0, 0, 0, 0, 11, 10, 8, 9, 7, 6, 5, 4, 0, 2, 1, 3, | ||
| 149 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 5, 6, 3, 0, 1, 2 | ||
| 150 | ); | ||
| 151 | |||
| 152 | return _mm256_shuffle_epi8(c, m); | ||
| 153 | } | ||
| 154 | |||
| 155 | static inline cube_t | ||
| 156 | inline_move_F3(cube_t c) | ||
| 157 | { | ||
| 158 | cube_t m = _mm256_set_epi8( | ||
| 159 | 0, 0, 0, 0, 11, 10, 16, 19, 7, 6, 5, 4, 25, 2, 1, 24, | ||
| 160 | 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 5, 64, 3, 36, 1, 38 | ||
| 161 | ); | ||
| 162 | |||
| 163 | return compose(c, m); | ||
| 164 | } | ||
| 165 | |||
| 166 | static inline cube_t | ||
| 167 | inline_move_B(cube_t c) | ||
| 168 | { | ||
| 169 | cube_t m = _mm256_set_epi8( | ||
| 170 | 0, 0, 0, 0, 18, 17, 9, 8, 7, 6, 5, 4, 3, 26, 27, 0, | ||
| 171 | 0, 0, 0, 0, 0, 0, 0, 0, 65, 6, 67, 4, 39, 2, 37, 0 | ||
| 172 | ); | ||
| 173 | |||
| 174 | return compose(c, m); | ||
| 175 | } | ||
| 176 | |||
| 177 | static inline cube_t | ||
| 178 | inline_move_B2(cube_t c) | ||
| 179 | { | ||
| 180 | cube_t m = _mm256_set_epi8( | ||
| 181 | 0, 0, 0, 0, 10, 11, 9, 8, 7, 6, 5, 4, 3, 1, 2, 0, | ||
| 182 | 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 7, 4, 1, 2, 3, 0 | ||
| 183 | ); | ||
| 184 | |||
| 185 | return _mm256_shuffle_epi8(c, m); | ||
| 186 | } | ||
| 187 | |||
| 188 | static inline cube_t | ||
| 189 | inline_move_B3(cube_t c) | ||
| 190 | { | ||
| 191 | cube_t m = _mm256_set_epi8( | ||
| 192 | 0, 0, 0, 0, 17, 18, 9, 8, 7, 6, 5, 4, 3, 27, 26, 0, | ||
| 193 | 0, 0, 0, 0, 0, 0, 0, 0, 67, 6, 65, 4, 37, 2, 39, 0 | ||
| 194 | ); | ||
| 195 | |||
| 196 | return compose(c, m); | ||
| 197 | } | ||
