View Full Version : x264: CPU Features like "SlowCTZ", "SlowAtom" etc.
GrandAdmiralThrawn
21st March 2011, 08:50
Greetings!
I hope this is the currect forum for this question. I have been using x264 custom builds since some time now (on both x64 Windows and Linux).
I found, that on some processors from AMD and also Intel, x264 shows Features like "SlowCTZ" and "SlowAtom" etc. I guess x264 refrains from using certain slow CPU features here?
I would just like to ask, if there is a full list of all the code paths in x264, and the meanings of all the features (also SSE2 vs. SSE2fast etc.)?
Would be quite the interesting read!
Thanks a lot.
Dark Shikari
21st March 2011, 10:42
From the code:
#define X264_CPU_CACHELINE_32 0x000001 /* avoid memory loads that span the border between two cachelines */
#define X264_CPU_CACHELINE_64 0x000002 /* 32/64 is the size of a cacheline in bytes */
#define X264_CPU_ALTIVEC 0x000004
#define X264_CPU_MMX 0x000008
#define X264_CPU_MMXEXT 0x000010 /* MMX2 aka MMXEXT aka ISSE */
#define X264_CPU_SSE 0x000020
#define X264_CPU_SSE2 0x000040
#define X264_CPU_SSE2_IS_SLOW 0x000080 /* avoid most SSE2 functions on Athlon64 */
#define X264_CPU_SSE2_IS_FAST 0x000100 /* a few functions are only faster on Core2 and Phenom */
#define X264_CPU_SSE3 0x000200
#define X264_CPU_SSSE3 0x000400
#define X264_CPU_SHUFFLE_IS_FAST 0x000800 /* Penryn, Nehalem, and Phenom have fast shuffle units */
#define X264_CPU_STACK_MOD4 0x001000 /* if stack is only mod4 and not mod16 */
#define X264_CPU_SSE4 0x002000 /* SSE4.1 */
#define X264_CPU_SSE42 0x004000 /* SSE4.2 */
#define X264_CPU_SSE_MISALIGN 0x008000 /* Phenom support for misaligned SSE instruction arguments */
#define X264_CPU_LZCNT 0x010000 /* Phenom support for "leading zero count" instruction. */
#define X264_CPU_ARMV6 0x020000
#define X264_CPU_NEON 0x040000 /* ARM NEON */
#define X264_CPU_FAST_NEON_MRC 0x080000 /* Transfer from NEON to ARM register is fast (Cortex-A9) */
#define X264_CPU_SLOW_CTZ 0x100000 /* BSR/BSF x86 instructions are really slow on some CPUs */
#define X264_CPU_SLOW_ATOM 0x200000 /* The Atom just sucks */
#define X264_CPU_AVX 0x400000 /* AVX support: requires OS support even if YMM registers
* aren't used. */
GrandAdmiralThrawn
21st March 2011, 20:26
Ah, thanks a lot! :)
I am currently also advertising x264 for benchmark purposes in a discussion forum (because of the scalability across multiple CPU cores / CPUs), and people have been asking about this information.
I will relay the info!
:thanks:
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.