https://www.chessprogramming.org/index.php?title=AVX2&feed=atom&action=history
AVX2 - Revision history
2024-03-28T15:35:45Z
Revision history for this page on the wiki
MediaWiki 1.30.1
https://www.chessprogramming.org/index.php?title=AVX2&diff=25915&oldid=prev
GerdIsenberg at 08:49, 4 November 2021
2021-11-04T08:49:09Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr style="vertical-align: top;" lang="en">
<td colspan="2" style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: white; color:black; text-align: center;">Revision as of 08:49, 4 November 2021</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l200" >Line 200:</td>
<td colspan="2" class="diff-lineno">Line 200:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67432&start=12 Re: Ryzen 2 and BMI2?] by [[Joost Buijs]], [[CCC]], May 18, 2020 » [[AMD]], [[BMI2]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67432&start=12 Re: Ryzen 2 and BMI2?] by [[Joost Buijs]], [[CCC]], May 18, 2020 » [[AMD]], [[BMI2]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75008 AVX2 optimized SF+NNUE and processor temperature]  by corres, [[CCC]], September 05, 2020 » [[Stockfish NNUE]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75008 AVX2 optimized SF+NNUE and processor temperature]  by corres, [[CCC]], September 05, 2020 » [[Stockfish NNUE]]</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [https://www.talkchess.com/forum3/viewtopic.php?f=2&t=78588 Regarding AVX2] by [[Ed Schroder|Rebel]], [[CCC]], November 03, 2021 » [[NNUE]]</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=External Links=  </div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=External Links=  </div></td></tr>
</table>
GerdIsenberg
https://www.chessprogramming.org/index.php?title=AVX2&diff=25605&oldid=prev
GerdIsenberg at 19:21, 20 July 2021
2021-07-20T19:21:15Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr style="vertical-align: top;" lang="en">
<td colspan="2" style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: white; color:black; text-align: center;">Revision as of 19:21, 20 July 2021</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l188" >Line 188:</td>
<td colspan="2" class="diff-lineno">Line 188:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[Wojciech Muła]], [http://dblp.uni-trier.de/pers/hd/k/Kurz:Nathan Nathan Kurz], [https://github.com/lemire Daniel Lemire] ('''2016'''). ''Faster Population Counts Using AVX2 Instructions''. [https://arxiv.org/abs/1611.07612 arXiv:1611.07612] <ref>[https://github.com/WojciechMula/sse-popcount/blob/master/popcnt-avx512-harley-seal.cpp sse-popcount/popcnt-avx512-harley-seal.cpp at master · WojciechMula/sse-popcount · GitHub]</ref> » [[AVX-512]], [[Population Count]]  </div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[Wojciech Muła]], [http://dblp.uni-trier.de/pers/hd/k/Kurz:Nathan Nathan Kurz], [https://github.com/lemire Daniel Lemire] ('''2016'''). ''Faster Population Counts Using AVX2 Instructions''. [https://arxiv.org/abs/1611.07612 arXiv:1611.07612] <ref>[https://github.com/WojciechMula/sse-popcount/blob/master/popcnt-avx512-harley-seal.cpp sse-popcount/popcnt-avx512-harley-seal.cpp at master · WojciechMula/sse-popcount · GitHub]</ref> » [[AVX-512]], [[Population Count]]  </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[Wojciech Muła]], [https://github.com/lemire Daniel Lemire] ('''2017'''). ''Faster Base64 Encoding and Decoding Using AVX2 Instructions''. [https://arxiv.org/abs/1704.00605 arXiv:1704.00605] » [https://en.wikipedia.org/wiki/Base64 Base64]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[Wojciech Muła]], [https://github.com/lemire Daniel Lemire] ('''2017'''). ''Faster Base64 Encoding and Decoding Using AVX2 Instructions''. [https://arxiv.org/abs/1704.00605 arXiv:1704.00605] » [https://en.wikipedia.org/wiki/Base64 Base64]</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [https://os.itec.kit.edu/21_3247.php Mathias Gottschlag], [https://os.itec.kit.edu/21_31.php Frank Bellosa] ('''2018'''). ''[https://os.itec.kit.edu/21_3486.php Mechanism to Mitigate AVX-Induced Frequency Reduction]''. [https://arxiv.org/abs/1901.04982 arXiv:1901.04982]</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [https://os.itec.kit.edu/21_3247.php Mathias Gottschlag], [https://os.itec.kit.edu/97_3742.php Philipp Machauer], [https://os.itec.kit.edu/21_3571.php Yussuf Khalil], [https://os.itec.kit.edu/21_31.php Frank Bellosa] ('''2021'''). ''[https://www.usenix.org/conference/atc21/presentation/gottschlag Fair Scheduling for AVX2 and AVX-512 Workloads]''. [https://www.usenix.org/conference/atc21 USENIX ATC '21]</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=Manuals=  </div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=Manuals=  </div></td></tr>
</table>
GerdIsenberg
https://www.chessprogramming.org/index.php?title=AVX2&diff=23151&oldid=prev
GerdIsenberg at 19:23, 31 December 2020
2020-12-31T19:23:50Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr style="vertical-align: top;" lang="en">
<td colspan="2" style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: white; color:black; text-align: center;">Revision as of 19:23, 31 December 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l194" >Line 194:</td>
<td colspan="2" class="diff-lineno">Line 194:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=Forum Posts=</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=Forum Posts=</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [https://stackoverflow.com/questions/30330013/does-hyperthreading-have-trouble-with-avx Does Hyperthreading have trouble with AVX?] by cmylin, [https://en.wikipedia.org/wiki/Stack_Overflow Stack Overflow], May 19, 2015 » [[Thread]]</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?t=65466&start=7 Re: Tapered Eval between 4 phases] by [[Youri Matiounine]], [[CCC]], October 16, 2017 » [[Tapered Eval]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?t=65466&start=7 Re: Tapered Eval between 4 phases] by [[Youri Matiounine]], [[CCC]], October 16, 2017 » [[Tapered Eval]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67432&start=12 Re: Ryzen 2 and BMI2?] by [[Joost Buijs]], [[CCC]], May 18, 2020 » [[AMD]], [[BMI2]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67432&start=12 Re: Ryzen 2 and BMI2?] by [[Joost Buijs]], [[CCC]], May 18, 2020 » [[AMD]], [[BMI2]]</div></td></tr>
</table>
GerdIsenberg
https://www.chessprogramming.org/index.php?title=AVX2&diff=21153&oldid=prev
GerdIsenberg at 14:03, 5 September 2020
2020-09-05T14:03:23Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr style="vertical-align: top;" lang="en">
<td colspan="2" style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: white; color:black; text-align: center;">Revision as of 14:03, 5 September 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l196" >Line 196:</td>
<td colspan="2" class="diff-lineno">Line 196:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?t=65466&start=7 Re: Tapered Eval between 4 phases] by [[Youri Matiounine]], [[CCC]], October 16, 2017 » [[Tapered Eval]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?t=65466&start=7 Re: Tapered Eval between 4 phases] by [[Youri Matiounine]], [[CCC]], October 16, 2017 » [[Tapered Eval]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67432&start=12 Re: Ryzen 2 and BMI2?] by [[Joost Buijs]], [[CCC]], May 18, 2020 » [[AMD]], [[BMI2]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67432&start=12 Re: Ryzen 2 and BMI2?] by [[Joost Buijs]], [[CCC]], May 18, 2020 » [[AMD]], [[BMI2]]</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75008 AVX2 optimized SF+NNUE and processor temperature]  by corres, [[CCC]], September 05, 2020 » [[Stockfish NNUE]]</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=External Links=  </div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=External Links=  </div></td></tr>
</table>
GerdIsenberg
https://www.chessprogramming.org/index.php?title=AVX2&diff=20963&oldid=prev
GerdIsenberg at 13:51, 25 August 2020
2020-08-25T13:51:36Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr style="vertical-align: top;" lang="en">
<td colspan="2" style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: white; color:black; text-align: center;">Revision as of 13:51, 25 August 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l170" >Line 170:</td>
<td colspan="2" class="diff-lineno">Line 170:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[DirGolem]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[DirGolem]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[NNUE]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[NNUE]]</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [[Pigeon]]</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[SIMD and SWAR Techniques]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[SIMD and SWAR Techniques]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
</table>
GerdIsenberg
https://www.chessprogramming.org/index.php?title=AVX2&diff=20941&oldid=prev
GerdIsenberg at 19:22, 24 August 2020
2020-08-24T19:22:35Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr style="vertical-align: top;" lang="en">
<td colspan="2" style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: white; color:black; text-align: center;">Revision as of 19:22, 24 August 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l167" >Line 167:</td>
<td colspan="2" class="diff-lineno">Line 167:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=See also=  </div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=See also=  </div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [[CFish#AVX2 Attacks|CFish - AVX2 Attacks]]</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [[DirGolem]]</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [[NNUE]]</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [[SIMD and SWAR Techniques]]</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">=SIMD=</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[AltiVec]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[AltiVec]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[AVX]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[AVX]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[AVX-512]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[AVX-512]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[BMI2]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[BMI2]]</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">* [[DirGolem]]</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[MMX]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[MMX]]</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">* [[SIMD and SWAR Techniques]]</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[SSE]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[SSE]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[SSE2]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [[SSE2]]</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l203" >Line 203:</td>
<td colspan="2" class="diff-lineno">Line 207:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=References=</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=References=</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div><references /></div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div><references /></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>'''[[x86|Up one Level]]'''</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>'''[[x86|Up one Level]]'''</div></td></tr>
</table>
GerdIsenberg
https://www.chessprogramming.org/index.php?title=AVX2&diff=19196&oldid=prev
GerdIsenberg at 13:12, 18 May 2020
2020-05-18T13:12:56Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr style="vertical-align: top;" lang="en">
<td colspan="2" style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: white; color:black; text-align: center;">Revision as of 13:12, 18 May 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l190" >Line 190:</td>
<td colspan="2" class="diff-lineno">Line 190:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=Forum Posts=</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=Forum Posts=</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?t=65466&start=7 Re: Tapered Eval between 4 phases] by [[Youri Matiounine]], [[CCC]], October 16, 2017 » [[Tapered Eval]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.talkchess.com/forum3/viewtopic.php?t=65466&start=7 Re: Tapered Eval between 4 phases] by [[Youri Matiounine]], [[CCC]], October 16, 2017 » [[Tapered Eval]]</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67432&start=12 Re: Ryzen 2 and BMI2?] by [[Joost Buijs]], [[CCC]], May 18, 2020 » [[AMD]], [[BMI2]]</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=External Links=  </div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=External Links=  </div></td></tr>
</table>
GerdIsenberg
https://www.chessprogramming.org/index.php?title=AVX2&diff=6315&oldid=prev
GerdIsenberg at 17:48, 25 August 2018
2018-08-25T17:48:40Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr style="vertical-align: top;" lang="en">
<td colspan="2" style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: white; color:black; text-align: center;">Revision as of 17:48, 25 August 2018</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l187" >Line 187:</td>
<td colspan="2" class="diff-lineno">Line 187:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf Intel® Architecture Instruction Set Extensions Programming Reference] (pdf)</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf Intel® Architecture Instruction Set Extensions Programming Reference] (pdf)</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf Intel® 64 and IA-32 Architectures Optimization Reference Manual] (pdf)</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>* [https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf Intel® 64 and IA-32 Architectures Optimization Reference Manual] (pdf)</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">=Forum Posts=</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* [http://www.talkchess.com/forum3/viewtopic.php?t=65466&start=7 Re: Tapered Eval between 4 phases] by [[Youri Matiounine]], [[CCC]], October 16, 2017 » [[Tapered Eval]]</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=External Links=  </div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=External Links=  </div></td></tr>
</table>
GerdIsenberg
https://www.chessprogramming.org/index.php?title=AVX2&diff=5709&oldid=prev
GerdIsenberg at 13:04, 9 August 2018
2018-08-09T13:04:22Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr style="vertical-align: top;" lang="en">
<td colspan="2" style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: white; color:black; text-align: center;">Revision as of 13:04, 9 August 2018</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l57" >Line 57:</td>
<td colspan="2" class="diff-lineno">Line 57:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=Applications=</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>=Applications=</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>With an appropriate [[Quad-Bitboards|quad-bitboard]] class, one may generate attacks of up to four different [[Direction|directions]] using [[AVX2#IndividualShifts|individual shifts]], for instance [[Knight Pattern#Calculation|knight attacks]] or [[Sliding Piece Attacks#Multiple|sliding piece attacks]] with [[Dumb7Fill]] to generate all [[On an empty Board#PositiveRays|positive]] or [[On an empty Board#NegativeRays|negative sliding ray attacks]] passing two times orthogonal and diagonal sliding pieces.</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>With an appropriate [[Quad-Bitboards|quad-bitboard]] class, one may generate attacks of up to four different [[Direction|directions]] using [[AVX2#IndividualShifts|individual shifts]], for instance [[Knight Pattern#Calculation|knight attacks]] or [[Sliding Piece Attacks#Multiple|sliding piece attacks]] with [[Dumb7Fill]] to generate all [[On an empty Board#PositiveRays|positive]] or [[On an empty Board#NegativeRays|negative sliding ray attacks]] passing two times orthogonal and diagonal sliding pieces.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">{{</ins>MappingHint<ins class="diffchange diffchange-inline">}} </ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">[[include page="</del>MappingHint<del class="diffchange diffchange-inline">"]]</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div><span id="KnightAttacks"></span></div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div><span id="KnightAttacks"></span></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Knight Attacks==</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Knight Attacks==</div></td></tr>
</table>
GerdIsenberg
https://www.chessprogramming.org/index.php?title=AVX2&diff=5708&oldid=prev
GerdIsenberg: Created page with "'''Home * Hardware * x86 * AVX2''' '''Advanced Vector Extensions 2''' (AVX2) is an expansion of the AVX instruction set. Support for 256-bit expansi..."
2018-08-09T13:03:23Z
<p>Created page with "'''<a href="/Main_Page" title="Main Page">Home</a> * <a href="/Hardware" title="Hardware">Hardware</a> * <a href="/X86" title="X86">x86</a> * AVX2''' '''Advanced Vector Extensions 2''' (AVX2) is an expansion of the <a href="/AVX" title="AVX">AVX</a> instruction set. Support for 256-bit expansi..."</p>
<p><b>New page</b></p><div>'''[[Main Page|Home]] * [[Hardware]] * [[x86]] * AVX2'''<br />
<br />
'''Advanced Vector Extensions 2''' (AVX2) is an expansion of the [[AVX]] instruction set. Support for 256-bit expansions of the [[SSE2]] 128-bit integer instructions will be added in AVX2, which was along with [[BMI2]] part of [[Intel|Intel's]] [https://en.wikipedia.org/wiki/Haswell_%28microarchitecture%29 Haswell] architecture in 2013, and since 2015, of [[AMD|AMD's]] [https://en.wikipedia.org/wiki/Excavator_%28microarchitecture%29 Excavator] microarchitecture. <br />
<br />
=Features=<br />
Beside expanding most integer AVX instructions to 256 bit, AVX2 has 3-operand general-purpose bit manipulation and multiply, [[AVX2#IndividualShifts|vector shifts]], [[Double Word|Double]]- and [[Quad Word]]-granularity any-to-any permutes, and 3-operand [https://en.wikipedia.org/wiki/FMA_instruction_set fused multiply-accumulate] support. An important catch is that not all of the instructions are simply generalizations of their 128-bit equivalents: many work "in-lane", applying the same 128-bit operation to each 128-bit half of the register instead of a 256-bit generalization of the operation. For example:<br />
{| class="wikitable"<br />
|-<br />
! Set <br />
! Instruction <br />
! Result <br />
|-<br />
! AVX <br />
| '''vpunpckldq''' xmm0, ABCD, EFGH <br />
| xmm1 := AEBF <br />
|-<br />
! AVX2 <br />
| '''vpunpckldq''' ymm0, ABCDEFGH, IJKLMNOP <br />
| xmm1 := AIBJEMFN <br />
|}<br />
<br />
If vpunpckldq had been expanded in the more intuitive fashion, the result of the AVX2 operation would be AIBJCKDL. The reason for this design might be to allow AVX to be implemented more easily with two separate 128-bit arithmetic units.<br />
<br />
Some AVX2 instructions, such as type conversion instructions, take both xmm and ymm registers as arguments. For example:<br />
{| class="wikitable"<br />
|-<br />
! Set <br />
! Instruction <br />
! Operation <br />
|-<br />
! AVX <br />
| '''vpmovzxbw''' xmm1, xmm2/m64 <br />
| xmm1 := Packed_Zero_Extend_Byte_To_Word(xmm2/m64) <br />
|-<br />
! AVX2 <br />
| '''vpmovzxbw''' ymm1, xmm2/m128 <br />
| ymm1 := Packed_Zero_Extend_Byte_To_Word(xmm2/m128) <br />
|}<br />
<span id="IndividualShifts"></span><br />
=Individual Vector Shifts=<br />
With AVX2 each data element, such as a [[Bitboards|bitboard]] of a [[Quad-Bitboards|quad-bitboard]], may be shifted left or right individually, as specified by the second source operand, with following [[Assembly]] [https://en.wikipedia.org/wiki/Assembly_language#Opcode_mnemonics_and_extended_mnemonics mnemonics] and [[C]] intrinsic equivalents:<br />
{| class="wikitable"<br />
|-<br />
! Instruction <br />
! Description <br />
! Intrinsic <br />
|-<br />
| '''VPSRLVQ''' ymm1, ymm2, ymm3/m256 <br />
| Variable Bit Shift Right Logical <br />
| _m256i [https://software.intel.com/en-us/node/695103 _mm256_srlv_epi64] (_m256i m, _m256i count) <br />
|-<br />
| '''VPSLLVQ''' ymm1, ymm2, ymm3/m256 <br />
| Variable Bit Shift Left Logical <br />
| _m256i [https://software.intel.com/en-us/node/695097 _mm256_sllv_epi64] (_m256i m, _m256i count) <br />
|}<br />
<br />
=Applications=<br />
With an appropriate [[Quad-Bitboards|quad-bitboard]] class, one may generate attacks of up to four different [[Direction|directions]] using [[AVX2#IndividualShifts|individual shifts]], for instance [[Knight Pattern#Calculation|knight attacks]] or [[Sliding Piece Attacks#Multiple|sliding piece attacks]] with [[Dumb7Fill]] to generate all [[On an empty Board#PositiveRays|positive]] or [[On an empty Board#NegativeRays|negative sliding ray attacks]] passing two times orthogonal and diagonal sliding pieces.<br />
<br />
[[include page="MappingHint"]]<br />
<span id="KnightAttacks"></span><br />
==Knight Attacks==<br />
<pre><br />
noNoWe noNoEa<br />
+15 +17<br />
| |<br />
noWeWe +6 __| |__+10 noEaEa<br />
\ /<br />
>0<<br />
__ / \ __<br />
soWeWe -10 | | -6 soEaEa<br />
| |<br />
-17 -15<br />
soSoWe soSoEa<br />
</pre><br />
<pre><br />
QBB noEaEa_noNoEa_noNoWe_noWeWe(U64 knights) {<br />
const QBB qmask (notAB, notA,notH,notGH);<br />
const QBB qshift (10,17,15,6);<br />
QBB qknights (knights);<br />
return (qknights << qshift) & qmask;<br />
}<br />
<br />
QBB soWeWe_soSoWe_soSoEa_soEaEa(U64 knights) {<br />
const QBB qmask (notGH,notH,notA,notAB);<br />
const QBB qshift (10,17,15,6);<br />
QBB qknights (knights);<br />
return (qknights >> qshift) & qmask;<br />
}<br />
</pre><br />
<span id="Dumb7Fill"></span><br />
==Dumb7Fill==<br />
<pre><br />
northwest north northeast<br />
noWe nort noEa<br />
+7 +8 +9<br />
\ | /<br />
west -1 <- 0 -> +1 east<br />
/ | \<br />
-9 -8 -7<br />
soWe sout soEa<br />
southwest south southeast<br />
</pre><br />
<pre><br />
QBB east_nort_noWe_noEa_Attacks(QBB qsliders {rq,rq,bq,bq}, U64 empty) {<br />
const QBB qmask (notA,-1,notH,notA);<br />
const QBB qshift (1,8,7,9);<br />
QBB qflood (sliders);<br />
QBB qempty = QBB(empty) & qmask;<br />
qflood |= qsliders = (qsliders << qshift) & qempty;<br />
qflood |= qsliders = (qsliders << qshift) & qempty;<br />
qflood |= qsliders = (qsliders << qshift) & qempty;<br />
qflood |= qsliders = (qsliders << qshift) & qempty;<br />
qflood |= qsliders = (qsliders << qshift) & qempty;<br />
qflood |= (qsliders << qshift) & qempty;<br />
return (qflood << qshift) & qmask <br />
}<br />
<br />
QBB west_sout_soEa_soWe_Attacks(QBB qsliders {rq,rq,bq,bq}, U64 empty) {<br />
const QBB qmask (notH,-1, notA,notH);<br />
const QBB qshift (1,8,7,9);<br />
QBB qflood (sliders);<br />
QBB qempty = QBB(empty) & qmask;<br />
qflood |= qsliders = (qsliders >> qshift) & qempty;<br />
qflood |= qsliders = (qsliders >> qshift) & qempty;<br />
qflood |= qsliders = (qsliders >> qshift) & qempty;<br />
qflood |= qsliders = (qsliders >> qshift) & qempty;<br />
qflood |= qsliders = (qsliders >> qshift) & qempty;<br />
qflood |= (qsliders >> qshift) & qempty;<br />
return (qflood >> qshift) & qmask <br />
}<br />
</pre><br />
<span id="BitboardPermutation"></span><br />
==Bitboard Permutation==<br />
For each [[Bitboards|bitboard]] in a destination [[Quad-Bitboards|quad-bitboard]], the Qwords Element Permutation ('''VPERMQ''') instruction <ref>_m256i [https://software.intel.com/en-us/node/683670 _mm256_permute4x64_epi64](_m256i val, const int control)</ref> selects one bitboard of a source quad-bitboard. This permits a bitboard in the source operand to be copied to multiple locations in the destination.<br />
<pre><br />
destQBB.bb[0] = sourceQBB.bb[ (imm8 >> 0) & 3 ]<br />
destQBB.bb[1] = sourceQBB.bb[ (imm8 >> 2) & 3 ]<br />
destQBB.bb[2] = sourceQBB.bb[ (imm8 >> 4) & 3 ]<br />
destQBB.bb[3] = sourceQBB.bb[ (imm8 >> 6) & 3 ]<br />
</pre><br />
<span id="VerticalNibble"></span><br />
==Vertical Nibble== <br />
Following code extracts the [[Pieces#PieceCoding|piece-code]] as "[[Quad-Bitboards#getPiece|vertical nibble]]" from a [[Quad-Bitboards|quad-bitboard]] as [[Board Representation|board representation]] inside a register, "indexed" by square. The idea is to shift the square bits to the leftmost bit, the [https://en.wikipedia.org/wiki/Sign_bit sign bit] of each bitboard, to perform the ''VPMOVMSKB'' instruction to get the sign bits of all 32 bytes into a general purpose register. Unfortunately, there is no ''VPMOVMSKQ'' to get only the signs of four bitboards, so some more masking and mapping is required to get the four-bit piece code ... <br />
<pre><br />
int getPiece (__m256i qbb, U64 sq) {<br />
__m128i shift = _mm_cvtsi32x_si128( sq ^ 63 ); /* left shift amount 63-sq */<br />
qbb = _mm256_sll_epi64( qbb, shift ); /* squares to signs */<br />
uint32 qbbsigns = _mm256_movemask_epi8( qbb ); /* get sign bits of 32 bytes */<br />
return ((qbbsigns & 0x80808080) * 0x00204081) >> 28; /* mask, nibble-map, shift */<br />
}<br />
</pre><br />
... using these intrinsics ...<br />
* [http://msdn.microsoft.com/en-us/library/6xsd2b20%28v=vs.100%29.aspx _mm_cvtsi64x_si128]<br />
* [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_sll_epi64&techs=AVX2 _mm256_sll_epi64]<br />
* [https://software.intel.com/en-us/node/695113 _mm256_movemask_epi8]<br />
<br />
... with seven [[Assembly|assembly]] instructions intended, assuming the quad-bitboard passed in ymm0 and the square in rcx<br />
<pre><br />
xor rcx, 63 ; left shift amount 63-sq<br />
movd xmm6, rcx ; shift amount via xmm<br />
vpsllq ymm6, ymm0, xmm6 ; squares to signs<br />
vpmovmskb eax, ymm6 ; get sign bits of 32 bytes<br />
and eax, 0x80808080 ; mask the four bitboard sign bits<br />
imul eax, 0x00204081 ; map them to the upper nibble<br />
shr eax, 28 ; nibble as piece code<br />
</pre><br />
<br />
=See also= <br />
* [[AltiVec]]<br />
* [[AVX]]<br />
* [[AVX-512]]<br />
* [[BMI2]]<br />
* [[DirGolem]]<br />
* [[MMX]]<br />
* [[SIMD and SWAR Techniques]]<br />
* [[SSE]]<br />
* [[SSE2]]<br />
* [[SSE3]]<br />
* [[SSSE3]]<br />
* [[SSE4]]<br />
<br />
=Publications=<br />
* [[Wojciech Muła]], [http://dblp.uni-trier.de/pers/hd/k/Kurz:Nathan Nathan Kurz], [https://github.com/lemire Daniel Lemire] ('''2016'''). ''Faster Population Counts Using AVX2 Instructions''. [https://arxiv.org/abs/1611.07612 arXiv:1611.07612] <ref>[https://github.com/WojciechMula/sse-popcount/blob/master/popcnt-avx512-harley-seal.cpp sse-popcount/popcnt-avx512-harley-seal.cpp at master · WojciechMula/sse-popcount · GitHub]</ref> » [[AVX-512]], [[Population Count]] <br />
* [[Wojciech Muła]], [https://github.com/lemire Daniel Lemire] ('''2017'''). ''Faster Base64 Encoding and Decoding Using AVX2 Instructions''. [https://arxiv.org/abs/1704.00605 arXiv:1704.00605] » [https://en.wikipedia.org/wiki/Base64 Base64]<br />
<br />
=Manuals= <br />
* [https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf Intel® Architecture Instruction Set Extensions Programming Reference] (pdf)<br />
* [https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf Intel® 64 and IA-32 Architectures Optimization Reference Manual] (pdf)<br />
<br />
=External Links= <br />
* [https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2 Advanced Vector Extensions 2 from Wikipedia]<br />
* [https://software.intel.com/en-us/node/523876 Overview: Intrinsics for Intel® Advanced Vector Extensions 2 (Intel® AVX2) Instructions | Intel® Software]<br />
* [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#techs=AVX2 Intel Intrinsics Guide - AVX2]<br />
* [http://software.intel.com/en-us/articles/intel-software-development-emulator/ Intel Software Development Emulator], which can be used to experiment with AVX and AVX2 on a CPU that doesn't support them.<br />
* [http://www.agner.org/optimize/blog/read.php?i=25 Stop the instruction set war] by [http://www.agner.org/ Agner Fog]<br />
* [https://software.intel.com/en-us/blogs/2013/05/17/processing-arrays-of-bits-with-intel-advanced-vector-extensions-2-intel-avx2 Processing Arrays of Bits with Intel® Advanced Vector Extensions 2 (Intel® AVX2) | Intel® Developer Zone] by [https://software.intel.com/en-us/user/123920 Thomas Willhalm], May 17, 2013<br />
* [http://users.atw.hu/instlatx64/GenuineIntel00306C3_Haswell_InstLatX64.txt Haswell Instructions Latency]<br />
<br />
=References=<br />
<references /><br />
<br />
'''[[x86|Up one Level]]'''</div>
GerdIsenberg