Not sure if this applies: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54210 If I compile on a k8 Opteron 248 with -march=native, I do not see -mprfchw listed in the options in -fverbose-asm. In the assembly, I see this: prefetcht0 (%rax) # ivtmp.1160 prefetcht0 304(%rcx) # prefetcht0 (%rax) # ivtmp.1160 If I compile on a bdver2 Opteron 6386 SE with -march=k8 (thus trying to target the older system), I do see it listed in the options in -fverbose-asm. In the assembly, I see this: prefetcht0 (%rax) # ivtmp.1160 prefetcht0 304(%rcx) # prefetchw (%rax) # ivtmp.1160 (The third line is the only difference) In both cases, I'm using gcc 4.9.3. Which is correct for a k8 Opteron 248?