https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110054
Bug ID: 110054
Summary: stdx::simd masked store should not use non-temporal
store instruction
Product: gcc
Version: 13.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: mkretz at gcc dot gnu.org
Target Milestone: ---
Target: x86_64-*-*, i?86-*-*
test case: https://compiler-explorer.com/z/h1qd3bajG
where(k, v).copy_to(ptr, ...)
compiles to MASKMOVDQU which is a non-temporal store. All other stores in simd
are normal (temporal) stores. A non-temporal store only makes sense if the user
explicitly asked for this behavior. Otherwise the performance hit can be
significant, because the relevant cache line(s) need to be evicted before the
write-combining write to memory.