Chad Rosier
87622b8b84
Get rid of storelv4si builtin as it can be expressed directly. This is general
...
goodness because it provides opportunites to cleanup things. For example,
uint64_t t1(__m128i vA)
{
uint64_t Alo;
_mm_storel_epi64((__m128i*)&Alo, vA);
return Alo;
}
was generating
movq %xmm0, -8(%rbp)
movq -8(%rbp), %rax
and now generates
movd %xmm0, %rax
rdar://11282581
llvm-svn: 155924
2012-05-01 18:11:51 +00:00
Nick Lewycky
d0ba3793aa
Comment mystery code.
...
llvm-svn: 149742
2012-02-04 02:16:48 +00:00
Nick Lewycky
51a009092c
Make _mm_cmpgt_epi8 immute to -funsigned-char.
...
llvm-svn: 149725
2012-02-03 23:57:48 +00:00
Bob Wilson
c9b97cc1da
Fix vector macros to correctly check argument types. <rdar://problem/10261670>
...
llvm-svn: 143792
2011-11-05 06:08:06 +00:00
Eli Friedman
89c11337ba
Add _mm_comige_sd to emmintrin.h, since I apparently forgot to do this in r138769.
...
<rdar://problem/10230751>
llvm-svn: 141310
2011-10-06 20:31:50 +00:00
Eli Friedman
9bb51adcce
Tweak *mmintrin.h so that they don't make any bad assumptions about alignment (which probably has little effect in practice, but better to get it right). Make the load in _mm_loadh_pi and _mm_loadl_pi a single LLVM IR instruction to make optimizing easier for CodeGen.
...
rdar://10054986
llvm-svn: 139874
2011-09-15 23:15:27 +00:00
Eli Friedman
f8cb480528
Add missing function _mm_ucomige_sd to emmintrin.h. PR10803.
...
llvm-svn: 138769
2011-08-29 21:26:24 +00:00
Bill Wendling
03e7e430c3
Add 'may_alias' attribute. Noticed by Eli.
...
llvm-svn: 131278
2011-05-13 01:24:00 +00:00
Bill Wendling
502931fad9
Represent the unaligned loads natively. These are converted into a call to the
...
correct unaligned load.
llvm-svn: 131268
2011-05-13 00:11:39 +00:00
Bill Wendling
e106c34817
LLVM doesn't always optimize away the four loads from this:
...
(__m128){ p[0], p[1], p[2], p[3] }
which produces really bad code. This could be done in instcombine, but it's
probably better to do it in the front-end instead.
<rdar://problem/9424836>
llvm-svn: 131237
2011-05-12 19:02:15 +00:00
Eli Friedman
8ba29d8e7f
PR9866: Fix the implementation of _mm_loadl_pd and _mm_loadh_pd to not make
...
bad assumptions about the alignment of the double* argument.
llvm-svn: 131052
2011-05-07 18:59:31 +00:00
Chris Lattner
f03406f103
don't use compound literals in MM macros, since they will be instantiated
...
into user code which may warn about them with -pedantic. Patch by Jonathan Sauer!
llvm-svn: 130149
2011-04-25 20:42:40 +00:00
Bill Wendling
b9c9e34cb3
Just use a native "load" instead of translating the builtin later. Clang can
...
take it!
I wasn't able to get __builtin_ia32_loaddqu to transform into an unaligned
load...I'll have to look into it further.
llvm-svn: 129427
2011-04-13 05:58:17 +00:00
Chris Lattner
1750cb037d
__builtin_ia32_psrldqi128 too
...
llvm-svn: 115301
2010-10-01 06:58:49 +00:00
Chris Lattner
81f347fe6d
the second argument to __builtin_ia32_pslldqi128 must be an immediate,
...
so it needs to be called from a macro, not a function. This is a necessary
but insufficient step towards fixing PR8221
llvm-svn: 115299
2010-10-01 06:52:23 +00:00
Eric Christopher
2a9898f0a2
Move some type defines from smmintrin.h to emmintrin.h to match where
...
gcc defines them.
llvm-svn: 112146
2010-08-26 02:09:25 +00:00
Benjamin Kramer
ae8ea1f715
Fix header comments.
...
llvm-svn: 111645
2010-08-20 16:47:17 +00:00
Chris Lattner
9052c35479
fix some vector extractions to return properly zero extended values
...
(instead of sign extending) to match ICC. GCC is changing this in
a series of their own PRs (e.g. 41323).
llvm-svn: 111637
2010-08-20 16:08:33 +00:00
Eli Friedman
07c89c6b3e
PR7588: Fix the _mm_shufflehi_epi16 macro. (The issue was an oversight
...
involving operator precedence.)
llvm-svn: 107902
2010-07-08 20:09:45 +00:00
Chris Lattner
8b3b145342
fix _mm_shuffle_pd too, thanks to Joel Falcou for pointing this out.
...
llvm-svn: 103873
2010-05-15 16:54:46 +00:00
Chris Lattner
7eac805bb0
fix PR6658: inline isn't a keyword in C89 mode, use __inline__ instead.
...
llvm-svn: 99190
2010-03-22 18:14:12 +00:00
Eric Christopher
33124e20c7
Migrate typedefs to the top level of xmmintrin.h and remove the same
...
one from emmintrin.h.
llvm-svn: 99020
2010-03-20 01:08:47 +00:00
Anders Carlsson
327c8df90c
Make our char vector types not be explicitly signed to match GCC and to fix compilation with C++ and -fno-lax-vector-conversions
...
llvm-svn: 82254
2009-09-18 19:18:19 +00:00
Anders Carlsson
dfa3117085
Fix PR4923.
...
Fix error in _mm_set_pd/_mm_setr_pd and add _mm_set_epi64x/_mm_set1_epi64x. Patch by Laurent Morichetti!
llvm-svn: 82228
2009-09-18 17:03:55 +00:00
Eli Friedman
5173349565
Switch some functions from using x86 builtins to using vector
...
operations.
llvm-svn: 76753
2009-07-22 17:08:01 +00:00
Eli Friedman
e9ff191459
Remove a few more vector builtins.
...
llvm-svn: 73022
2009-06-07 09:32:56 +00:00
Eli Friedman
4d8d7d3263
Replace more calls to builtins with generic code.
...
llvm-svn: 72995
2009-06-06 08:08:06 +00:00
Eli Friedman
d00fd2885e
Fix some casts to work without -flax-vector-conversions.
...
llvm-svn: 72981
2009-06-06 03:45:06 +00:00
Eli Friedman
ebd9314f32
Misc fixes to MMX/SSE intrinsics: a few small bug fixes, and getting rid
...
of calls to builtins for constructs which can be expressed directly.
llvm-svn: 72979
2009-06-06 02:13:04 +00:00
Eli Friedman
f83c258eae
Add aliases for a couple of SSE intrinsics. Patch by Ed Schouten.
...
llvm-svn: 72717
2009-06-02 05:55:48 +00:00
Anders Carlsson
2081200b8c
Add 'cmp' SSE builtins and get rid of a bunch of other builtins.
...
llvm-svn: 72032
2009-05-18 19:16:46 +00:00
Anders Carlsson
57640939c2
Fix typo.
...
llvm-svn: 68466
2009-04-06 21:55:22 +00:00
Anders Carlsson
823c02eaab
Add the nodebug attribute to intrinsics
...
llvm-svn: 64519
2009-02-14 01:00:11 +00:00
Mike Stump
5b31ed3ff0
80col.
...
llvm-svn: 64450
2009-02-13 14:24:50 +00:00
Anders Carlsson
43c2bab6d3
Fix more bugs I discovered
...
llvm-svn: 62656
2009-01-21 01:49:39 +00:00
Anders Carlsson
88b53663fb
Fix implementation of _mm_pause.
...
llvm-svn: 61441
2008-12-26 02:22:10 +00:00
Anders Carlsson
19ef5d49d4
OK, all tests pass. Let's start using the SSE2 header
...
llvm-svn: 61440
2008-12-26 00:57:11 +00:00