[llvm-bugs] [Bug 46408] New: Prefer zmm16 through zmm31 to avoid vzeroupper

via llvm-bugs llvm-bugs at lists.llvm.org
Sat Jun 20 13:26:23 PDT 2020


https://bugs.llvm.org/show_bug.cgi?id=46408

            Bug ID: 46408
           Summary: Prefer zmm16 through zmm31 to avoid vzeroupper
           Product: libraries
           Version: 10.0
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: X86
          Assignee: unassignedbugs at nondot.org
          Reporter: josephcsible at gmail.com
                CC: craig.topper at gmail.com, llvm-bugs at lists.llvm.org,
                    llvm-dev at redking.me.uk, spatel+llvm at rotateright.com

Consider this code:

#include <immintrin.h>
void f(void) {
    __m512 tmp;
    __asm__ __volatile__("nop # it picked %0" : "=v"(tmp));
}

Or this minimized code, without headers:

void f(void) {
    float __attribute__((__vector_size__(64))) tmp;
    __asm__ __volatile__("nop # it picked %0" : "=v"(tmp));
}

Compile with "-mavx512f". In both cases, it will end up picking zmm0, and thus
needing to emit vzeroupper afterwards. Since we're using AVX512 anyway, we
should prefer zmm16 through zmm31, which don't require vzeroupper afterwards.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200620/c3f1c9c3/attachment.html>


More information about the llvm-bugs mailing list