On Mon, Mar 17, 2014 at 9:52 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
> 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.
>

If I want to write codes with asm statements which can
be compiled with GCC 4.6 and above, I will use xmm
instead of ymm.  It makes ymm less attractive.

-- 
H.J.

Reply via email to