[cfe-commits] r116162 - in /cfe/trunk: lib/CodeGen/CGBuiltin.cpp test/CodeGen/builtins-x86.c

Argyrios Kyrtzidis kyrtzidis at apple.com
Sat Oct 9 21:58:42 PDT 2010


On Oct 9, 2010, at 9:43 PM, Chris Lattner wrote:

> On Oct 9, 2010, at 9:42 PM, Chris Lattner wrote:
>> On Oct 9, 2010, at 8:19 PM, Argyrios Kyrtzidis wrote:
>> 
>>> Author: akirtzidis
>>> Date: Sat Oct  9 22:19:11 2010
>>> New Revision: 116162
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=116162&view=rev
>>> Log:
>>> Implement __builtin_ia32_vec_ext_v2si function (required by Qt).
>> 
>> Hi Argiris,
>> 
>> Why can't they use the right intrinsic from xmmintrin.h?  We prefer not to implement builtins like this, people are supposed to use the official documented interfaces in the *mmintrin.h files.
> 
> Oh... unless this is an MMX builtin.  In which case we *do* want to support it, but we *have* to map it onto an LLVM IR intrinsic.

They are using _mm_cvtsi64_si32 from mmintrin.h, here it is for reference:

static __inline__ int __attribute__((__always_inline__, __nodebug__))
_mm_cvtsi64_si32(__m64 __m)
{
    return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0);
}

The IR emitted for it is the same as llvm-gcc, if it needs mapping onto an LLVM IR intrinsic feel free to make the necessary changes or let me know what they should be.

-Argiris

> 
> -Chris
> 
>> 
>> -Chris
>> 
>>> 
>>> Modified:
>>>  cfe/trunk/lib/CodeGen/CGBuiltin.cpp
>>>  cfe/trunk/test/CodeGen/builtins-x86.c
>>> 
>>> Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=116162&r1=116161&r2=116162&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
>>> +++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Sat Oct  9 22:19:11 2010
>>> @@ -2002,6 +2002,9 @@
>>> case X86::BI__builtin_ia32_vec_init_v2si:
>>>   return Builder.CreateBitCast(BuildVector(Ops),
>>>                                llvm::Type::getX86_MMXTy(VMContext));
>>> +  case X86::BI__builtin_ia32_vec_ext_v2si:
>>> +    return Builder.CreateExtractElement(Ops[0],
>>> +                                  llvm::ConstantInt::get(Ops[1]->getType(), 0));
>>> case X86::BI__builtin_ia32_pslldi:
>>> case X86::BI__builtin_ia32_psllqi:
>>> case X86::BI__builtin_ia32_psllwi:
>>> 
>>> Modified: cfe/trunk/test/CodeGen/builtins-x86.c
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-x86.c?rev=116162&r1=116161&r2=116162&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/test/CodeGen/builtins-x86.c (original)
>>> +++ cfe/trunk/test/CodeGen/builtins-x86.c Sat Oct  9 22:19:11 2010
>>> @@ -261,6 +261,7 @@
>>> tmp_V8c = __builtin_ia32_packsswb(tmp_V4s, tmp_V4s);
>>> tmp_V4s = __builtin_ia32_packssdw(tmp_V2i, tmp_V2i);
>>> tmp_V8c = __builtin_ia32_packuswb(tmp_V4s, tmp_V4s);
>>> +  tmp_i = __builtin_ia32_vec_ext_v2si(tmp_V2i, 0);
>>> 
>>> (void) __builtin_ia32_ldmxcsr(tmp_Ui);
>>> tmp_Ui = __builtin_ia32_stmxcsr();
>>> 
>>> 
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>> 
> 





More information about the cfe-commits mailing list