x86inc: AVX-512 support
authorHenrik Gramner <henrik@gramner.com>
Sat, 25 Mar 2017 09:16:09 +0000 (10:16 +0100)
committerJames Darnley <james.darnley@gmail.com>
Sun, 24 Dec 2017 21:02:41 +0000 (22:02 +0100)
commitf7197f68dc61753be67ff68b27bbd3b15fe43da6
treeaf01e0b8a81d471a5889803f2c571d11836d2873
parent8f86e6623811f7713d5e72c13797e20fffb3df62
x86inc: AVX-512 support

AVX-512 consists of a plethora of different extensions, but in order to keep
things a bit more manageable we group together the following extensions
under a single baseline cpu flag which should cover SKL-X and future CPUs:
 * AVX-512 Foundation (F)
 * AVX-512 Conflict Detection Instructions (CD)
 * AVX-512 Byte and Word Instructions (BW)
 * AVX-512 Doubleword and Quadword Instructions (DQ)
 * AVX-512 Vector Length Extensions (VL)

On x86-64 AVX-512 provides 16 additional vector registers, prefer using
those over existing ones since it allows us to avoid using `vzeroupper`
unless more than 16 vector registers are required. They also happen to
be volatile on Windows which means that we don't need to save and restore
existing xmm register contents unless more than 22 vector registers are
required.

Big thanks to Intel for their support.
libavutil/x86/x86inc.asm