Všimnul jsem si, že na Skylake i7 není AVX rychlejší než SSE
To platí ale jen u některých instrukcí (div, sqrt, vcvttpd2dq, atd) a přesouvání mezi LO/HI (permutace, broadcast, ale i např. `vpsrlw y, y, x`), u ostatních rozdíl mezi XMM|YMM není.
Příklad (čísla jsou nezaokrouhlené, je to +-):
vpmovsxdq xmm, xmm : Lat: 0.96 Rcp: 0.96
vpmovsxdq ymm, xmm : Lat: 2.86 Rcp: 0.96
vpsrlq xmm, xmm, i8 : Lat: 0.96 Rcp: 0.48
vpsrlq ymm, ymm, i8 : Lat: 0.96 Rcp: 0.48
vpsrlq xmm, xmm, xmm : Lat: 1.91 Rcp: 0.96
vpsrlq ymm, ymm, xmm : Lat: 3.82 Rcp: 0.96
vpunpckhbw xmm, xmm, xmm : Lat: 0.96 Rcp: 0.96
vpunpckhbw ymm, ymm, ymm : Lat: 0.96 Rcp: 0.96
vrsqrtps xmm, xmm : Lat: 3.82 Rcp: 0.96
vrsqrtps ymm, ymm : Lat: 3.82 Rcp: 0.96
vsqrtpd xmm, xmm : Lat:12.41 Rcp: 4.65
vsqrtpd ymm, ymm : Lat:12.41 Rcp: 9.07
vsqrtps xmm, xmm : Lat:11.45 Rcp: 2.86
vsqrtps ymm, ymm : Lat:11.45 Rcp: 5.73
vsqrtsd xmm, xmm, xmm : Lat:12.41 Rcp: 4.30
vsqrtss xmm, xmm, xmm : Lat:11.45 Rcp: 2.86
vsubpd xmm, xmm, xmm : Lat: 3.82 Rcp: 0.64
vsubpd ymm, ymm, ymm : Lat: 3.82 Rcp: 0.64
vsubps xmm, xmm, xmm : Lat: 3.82 Rcp: 0.64
vsubps ymm, ymm, ymm : Lat: 3.82 Rcp: 0.64
vmulpd xmm, xmm, xmm : Lat: 3.82 Rcp: 0.64
vmulpd ymm, ymm, ymm : Lat: 3.82 Rcp: 0.64
vmulps xmm, xmm, xmm : Lat: 3.82 Rcp: 0.64
vmulps ymm, ymm, ymm : Lat: 3.82 Rcp: 0.64
vhaddpd xmm, xmm, xmm : Lat: 5.73 Rcp: 1.91
vhaddpd ymm, ymm, ymm : Lat: 5.73 Rcp: 1.91
vhaddps xmm, xmm, xmm : Lat: 5.73 Rcp: 1.91
vhaddps ymm, ymm, ymm : Lat: 5.73 Rcp: 1.91
vxorpd xmm, xmm, xmm : Lat: 0.96 Rcp: 0.32
vxorpd ymm, ymm, ymm : Lat: 1.00 Rcp: 0.34
vinsertf128 ymm, ymm, xmm, i8 : Lat: 2.86 Rcp: 0.96
vinserti128 ymm, ymm, xmm, i8 : Lat: 2.86 Rcp: 0.96
Tabulky od Agner Fog jsou dobrý start, ale při vlastním měření jsem zjistil, že nejsou úplně přesné.