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 |