On 06/28/2018 01:16 AM, Uros Bizjak wrote:
> Hello!
>
>>> --- i386.md (revision 259756)
>>> +++ i386.md (working copy)
>>> @@ -3547,7 +3547,7 @@
>>> {
>>> case MODE_DF:
>>>if (TARGET_AVX && REG_P (operands[0]) && REG_P (operands[1]))
>>> -return "vmovsd\t{%1, %0, %0|%0, %0, %1}";
>>>
On 06/28/2018 01:16 AM, Uros Bizjak wrote:
> Hello!
>
>>> --- i386.md (revision 259756)
>>> +++ i386.md (working copy)
>>> @@ -3547,7 +3547,7 @@
>>> {
>>> case MODE_DF:
>>>if (TARGET_AVX && REG_P (operands[0]) && REG_P (operands[1]))
>>> -return "vmovsd\t{%1, %0, %0|%0, %0, %1}";
>>>
Hello!
> So what I'm confused about is in the original output template operand
> 0 is duplicated. In the new template operand 1 is duplicated.
>
> Presumably what you're trying to accomplish is avoiding a false read
> on operand 0 (the destination)? Can you please confirm?
> Knowing that
Hello!
>> --- i386.md (revision 259756)
>> +++ i386.md (working copy)
>> @@ -3547,7 +3547,7 @@
>> {
>> case MODE_DF:
>>if (TARGET_AVX && REG_P (operands[0]) && REG_P (operands[1]))
>> -return "vmovsd\t{%1, %0, %0|%0, %0, %1}";
>> +return "%vmovsd\t{%d1, %0|%0, %d1}";
>>return
On 05/02/2018 03:55 AM, Nesterovskiy, Alexander wrote:
> This patch fixes false dependencies for vmovss, vmovsd, vrcpss, vrsqrtss,
> vsqrtss and vsqrtsd instructions.
>
> Tested on x86-64/Linux, no new test fails, some SPEC 2006/2017 performance
> gains.
> Please let me know if something is
> This patch fixes false dependencies for vmovss, vmovsd, vrcpss, vrsqrtss,
> vsqrtss and vsqrtsd
> instructions.
>
> Tested on x86-64/Linux, no new test fails, some SPEC 2006/2017 performance
> gains.
> Please let me know if something is wrong here and should be changed.
Your submission needs
This patch fixes false dependencies for vmovss, vmovsd, vrcpss, vrsqrtss,
vsqrtss and vsqrtsd instructions.
Tested on x86-64/Linux, no new test fails, some SPEC 2006/2017 performance
gains.
Please let me know if something is wrong here and should be changed.
--
Alexander Nesterovskiy