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.

Reply via email to