The instruction set of a tbird is a superset of the i686 set. The instruction set of the Athlon XP is a superset of that of the Tbird. There are instructions in it that are not present in the Pentium Pro (the first i686). Examples are 3dnow, 3dnow extended, and (I think) mmx extended.
i686 is a set of instructions that virtually all processors produced since the first athlon by AMD and the first PPro by Intel have included, so if you compile for that everything works.
Most of the instructions added over the years regard floating point optimizations and graphics/multimedia stuff (mmx, 3dnow, and sse). These have little to no effect on many applications.
Also, each step up gives a smaller benefit. So compiling for 486 might be a lot faster than 386, but the gain from going from 486 to 586 is noticeable but smaller, and the gain going from 586 to 686 is even smaller. The most critical instructions were implemented first. The later ones matter less. That's why some people argue that the speedup isn't that important from compiling.
The speedup, however, can be huge in some applications. Folding is an example. Foldingathome includes the ability to autodetect the cpu and use different branches of code. A cpu using i686 alone is much slower than one using 3dnow, which is much slower than one using SSE, which is much slower than one using SSE2. If you look in your folding logs, it will tell you things like "SSE optimizations on" or some such message. My Athlon XP 1500+ (1350 mhz, 256kb cache) DESTROYS my Athlon Tbird 1400 mhz 256kb cache) in folding because of the SSE in Athlon XP's.
It is true that everyone would gain performance by using a version custom compiled to their processor, but it would break backwards compatibility, so most binary software distributors go with the backwards compatibility. Some, like Arch, have decided to cut off support for anything pre i686, and that makes Arch faster than distros that continue to support cpus all the way back to i386. Also many distros include kernels compiled for i386, i486, i586, and i686. You can install them in debian with apt. Red Hat packages also include the arch they are compiled for in the name usually.
One of the main reasons i686 is used is that it's the last architecture that EVERYTHING supports. After that, AMD and Intel branched in different directions, with AMD focusing on 3dnow and Intel on SSE. It made it harder, even with the passage of time, to find an instruction set they all supported.
Finally, C2D's have a whole set of instructions that are not present in i686 computers, as well as the i686 instructions for backwards compatibility. The instruction set is usually called AMD64, although Intel uses a different name for it.
It would be interesting to pick some applications, compile them for 386, 486, 586, 686, athlon-tbird, and athlon-xp and benchmark them on some tasks to see how much difference it makes.
More and more manufacturers are discontinuing support for older cpus as 1) there is no chance you're going to be able to run World of Warcraft on a 386SX anyways and 2) not many people have them anymore. On the WoW box it says "Required Pentium III 800 mhz or higher or AMD Athlon". Most likely that means, "We compiled this package for i686 w/ MMX" It probably also has the ability to detect and use SSE on those processors that support it, as it would matter for that package. Most likely if you tried to run this on a P1, it would simply crash horribly, because the Pentium doesn't have the right instructions. It would probably run on a P2 though... albeit very badly. The only instructions (I think) in a P3 not in a P2 are SSE, and AMD Athlon classics do not have SSE, and they are supported. (It's possible they also added extended mmx then, but I don't think so.)
did my suggestion in post #44 not work?
Or could you make a dpkg wrapper script what would pass CFLAGS="" at the command line and store the binaries in a special dir, so you could have a 'axpdpkg' and a 'tbirddpkg'?
TBH, haven't goofed around with it yet. I'm a bit afraid to until I undertstand how it keeps track of which packages it has prebuilt in binary format.