Gentoo Archives: gentoo-dev

From: Andrew Savchenko <bircoph@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Review: desc/cpu_flags_x86.desc
Date: Mon, 19 Jan 2015 08:10:00
Message-Id: 20150119110935.d830e15afcd960f859300085@gentoo.org
In Reply to: Re: [gentoo-dev] Review: desc/cpu_flags_x86.desc by Patrick Lauer
1 On Mon, 19 Jan 2015 08:13:46 +0800 Patrick Lauer wrote:
2 > On Sunday 18 January 2015 21:44:05 Michał Górny wrote:
3 > > Hello,
4 > >
5 > > I would like to commit the following flags as cpu_flags_x86_desc.
6 > > The list combines global USE flags with some local USE flags I've been
7 > > able to find.
8 > >
9 > >
10 > > 3dnow - Use the 3DNow! instruction set
11 > > 3dnowext - Use the Enhanced 3DNow! instruction set
12 >
13 > Those are kinda mostly dead (no new CPUs have them anymore)
14
15 1) Modern AMD CPUs still support them (and can give performance
16 benefits from using them.
17 2) I'm writing right now from an old host with CPU supporting them.
18
19 > > aes-ni - Enable support for Intel's AES instruction set (aes in cpuinfo)
20 > > avx - Adds support for Advanced Vector Extensions instructions
21 > > avx2 - Adds support for Advanced Vector Extensions 2 instructions
22 > > fma - Use the Fused Multiply Add instruction set
23 >
24 > > mmx - Use the MMX instruction set
25 > Not sure if this one needs to be specified - amd64 always has it, and on x86
26 > your code should do cpu feature detection anyway
27
28 1) No. We have cpudetection USE flag if user wants it.
29 2) Not all VIA CPUs support MMX.
30 3) Run-time CPU detection is *always slower* than compiled in code.
31 (Learn the difference between using GOTs or long jupms and not
32 using them, especiall on non-amd64 sysmems.)
33
34 > > mmxext - Use the Extended MMX instruction set (intersection of Enhanced
35 > > 3DNow! and SSE instruction sets) (3dnowext or sse in cpuinfo) padlock - Use
36 > > VIA padlock instructions
37 > Kinda very dead, even more than 3dnow
38
39 So what? There are still people using it.
40
41 > > popcnt - Enable popcnt instruction support
42 > Why?!
43
44 Why not? It is an instruction set outside from official SSE4.2
45 standard, as well as LZCNT by the way.
46
47 > > sse - Use the SSE instruction set
48 > Always exists on amd64, so this would be x86 special
49 >
50 > > sse2 - Use the SSE2 instruction set
51 > > sse3 - Use the SSE3 instruction set (pni in cpuinfo)
52 > > sse4 - Enable SSE4 instruction support
53 > > sse4_1 - Enable SSE4.1 instruction support
54 > > sse4_2 - Enable SSE4.2 instruction support
55 > > sse4a - Enable SSE4a instruction support
56 > > ssse3 - Use the SSSE3 instruction set
57 > Wow, such a wonderful mess :)
58
59 Very productive comment...
60
61 > So half of those are obsolete/dead, and the other half you need to do proper
62 > feature detection - why do we want that as useflags again?
63
64 Because we have users interested in these flags, including myself
65 but not limited to.
66
67 Best regards,
68 Andrew Savchenko