On Mon, Mar 17, 2014 at 4:12 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>> Patch in the bottom allows to use ymmXX and zmmXX >> register names in inline asm statements as well as >> in `register` variables definitions. >> >> New tests pass. >> Bootstrap pass. >> >> Is it ok for trunk? >> Do we need to backport it to 4.8? >> >> gcc/ >> * config/i386/i386.h (ADDITIONAL_REGISTER_NAMES): Add >> ymm and zmm register names. >> >> testsuite/ >> * gcc.target/i386/avx-additional-reg-names.c: New. >> * gcc.target/i386/avx512f-additional-reg-names.c: Ditto. > Doesn't GCC generate the same code with xmm? > >> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-additional-reg-names.c >> b/gcc/testsuite/gcc.target/i386/avx512f-additional-reg-names.c >> new file mode 100644 >> index 0000000..1bd428a >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/i386/avx512f-additional-reg-names.c >> @@ -0,0 +1,9 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-mavx512f" } */ >> + >> +void foo () >> +{ >> + register int zmm_var asm ("zmm9"); >> + >> + __asm__ __volatile__("vxorpd %%zmm0, %%zmm0, %%zmm7\n" : : : "zmm7" ); >> +} > > Doesn't GCC generate the same code with xmm? It does, but the situation is the same as with %eax vs. %rax names. So, I think the patch is OK for mainline, and similar patch involving only %ymm names for AVX-enabled branches. Uros.