[cfe-commits] r166743 - in /cfe/trunk: lib/Headers/xmmintrin.h test/CodeGen/sse-builtins.c

Eli Friedman eli.friedman at gmail.com
Mon Oct 29 18:01:31 PDT 2012


On Thu, Oct 25, 2012 at 8:23 PM, Manman Ren <mren at apple.com> wrote:
>
>
> Sent from my iPhone
>
> On Oct 25, 2012, at 7:54 PM, Eli Friedman <eli.friedman at gmail.com> wrote:
>
>> On Thu, Oct 25, 2012 at 7:35 PM, Manman Ren <mren at apple.com> wrote:
>>>
>>>
>>> Sent from my iPhone
>>>
>>> On Oct 25, 2012, at 6:13 PM, Eli Friedman <eli.friedman at gmail.com> wrote:
>>>
>>>> On Thu, Oct 25, 2012 at 5:25 PM, Manman Ren <mren at apple.com> wrote:
>>>>> Author: mren
>>>>> Date: Thu Oct 25 19:25:10 2012
>>>>> New Revision: 166743
>>>>>
>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=166743&view=rev
>>>>> Log:
>>>>> X86 SSE Intrinsics: update header for sqrt_ss, rsqrt_ss and rcp_ss.
>>>>>
>>>>> There intrinsics pass through the upper FP values from the input.
>>>>> rdar://12558838
>>>>>
>>>>> Modified:
>>>>>   cfe/trunk/lib/Headers/xmmintrin.h
>>>>>   cfe/trunk/test/CodeGen/sse-builtins.c
>>>>>
>>>>> Modified: cfe/trunk/lib/Headers/xmmintrin.h
>>>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/xmmintrin.h?rev=166743&r1=166742&r2=166743&view=diff
>>>>> ==============================================================================
>>>>> --- cfe/trunk/lib/Headers/xmmintrin.h (original)
>>>>> +++ cfe/trunk/lib/Headers/xmmintrin.h Thu Oct 25 19:25:10 2012
>>>>> @@ -95,7 +95,8 @@
>>>>> static __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
>>>>> _mm_sqrt_ss(__m128 a)
>>>>> {
>>>>> -  return __builtin_ia32_sqrtss(a);
>>>>> +  __m128 c = __builtin_ia32_sqrtss(a);
>>>>> +  return (__m128) { c[0], a[1], a[2], a[3] };
>>>>> }
>>>>
>>>> What does exactly does __builtin_ia32_sqrtss return, if not the result
>>>> of a sqrtss instruction?
>>> builtin returns the result of sqrtss instruction, which only updates the lowest FP. mm_sqrt_ss has the upper FPs pass through to the output.
>>
>> What exactly is in the top 96 bits of the return value of
>> __builtin_ia32_sqrtss, then?
> Those bits are undefined with the current implementation, same goes for sqrt_sd.

Why are the intrinsics defined to take vectors in the first place, then?

-Eli



More information about the cfe-commits mailing list