This is the mail archive of the mailing list for the glibc 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]

[Bug math/20495] New: SIMD sincosf implementation lacks VEX encoded version

            Bug ID: 20495
           Summary: SIMD sincosf implementation lacks VEX encoded version
           Product: glibc
           Version: 2.24
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: math
          Assignee: unassigned at sourceware dot org
          Reporter: kungfujesus06 at gmail dot com
  Target Milestone: ---

I noticed fairly recently that after a lot of AVX vectorized code I was
utilizing the scalar sincosf in libm for the remainder.  I found it
particularly odd that this code was being outperformed by SSE4 variations of
the code, and later traced the issue to be the fact that sincosf is utilizing
legacy SSE instructions in what was otherwise AVX accelerated code.  This was
causing a sizable transition penalty between AVX and SSE, as the code calling
the sincosf function was utilizing ymm* (AVX) registers.  I added a hardcoded
vzeroupper() to fix this transition penalty, but having a VEX coded version to
jump to might be of benefit for some workloads.

Arguably I shouldn't be utilizing the scalar instructions at all for the
remainder, and that's probably one other possible solution, but I thought I'd
file this all the same.

You are receiving this mail because:
You are on the CC list for the bug.

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