This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GCC/GLIBC and non-temporal instructions


Well, all these 

    storent
    emit_storent_insn
    may_use_storent_in_loop
    storent_optab
    nontemporal
    assign_set_nontemporal_move
    mark_nontemporal_store
    mark_nontemporal_stores
    nontemporal_store_p
    schedule_prefetches
    should_issue_prefetch
    issue_prefetch_ref 
    etc.

things in GCC sources -- do they ever get triggered or not?

Also, looking up in GLIBC sources I can see MOVNTxxx instructions terminated 
with SFENCE, but not prefixed with LFENCE. What could this possibly mean?

- Sergey



----- Original Message ----
From: Ian Lance Taylor <iant@google.com>
To: Sergey Oboguev <oboguev@yahoo.com>
Cc: gcc@gcc.gnu.org
Sent: Tue, January 3, 2012 11:24:15 AM
Subject: Re: GCC/GLIBC and non-temporal instructions

Sergey Oboguev <oboguev@yahoo.com> writes:

> The question is whether there is any GCC/runtime policy on non-temporal 
> SSE/3DNow instructions?

As far as I know gcc will never generate any non-temporal instructions,
except if the programmer uses the special intrinsic functions which
generate them.  If the programmer uses those intrinsic functions, she or
he is entirely responsible for issuing the required fence instructions,
via intrinsic functions like _mm_lfence.

So the GCC/runtime policy on non-temporal instructions is that using
them correctly is entirely up to the programmer.

Ian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]