This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
option -mprfchw on 2 different Opteron cpus
- From: NightStrike <nightstrike at gmail dot com>
- To: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Cc: Jan Hubicka <hubicka at ucw dot cz>, Jakub Jelinek <jakub at redhat dot com>
- Date: Sun, 1 May 2016 16:24:45 -0400
- Subject: option -mprfchw on 2 different Opteron cpus
- Authentication-results: sourceware.org; auth=none
Reposting from here:
https://gcc.gnu.org/ml/gcc-help/2016-05/msg00003.html
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?
Also, FWIW:
1) The march=native version that uses prefetcht0 is very repeatably
faster by about 15% in the particular test case I'm looking at.
2) The compilers in both instances are not just the same version, they
are the same compiler binary installed on an NFS mount and shared to both
computers.