In addition to that great list, see also "Hacker's Delight", and several of Jon Bentley's books (Programming Pearls, Writing Efficient Programs, etc.). They're dated, but the basic ideas are eternal. The application to x86 requires combining those ideas with the specifics you get from Agner Fog's references.
On sitkack's recommendation (see my comment history) I'm currently reading through Rick Booth's "Inner Loops". It's another dated classic that may be useful when used in combination with other more modern resources. Some of Booth's explanations micro-ops and superscalar dispatch are great, although it would be difficult for a beginner to differentiate what still applies today from what doesn't.