ThemicroarchitectureofIntel,AMDandVIACPUs:Anoptimizationguideforassemblyprogrammersandcompilermakers