OSDN Git Service

139d927cf3bf63f5611a919f023740e17aaf3e88
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.target / i386 / sse-13.c
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -msse4.1 -msse4a" } */
3
4 /* Test that the intrinsics compile with optimization.  All of them are
5    defined as inline functions in {,x,e,p,t,s,a}mmintrin.h that reference
6    the proper builtin functions.  Defining away "static" and "__inline"
7    results in all of them being compiled as proper functions.  */
8
9 #define static
10 #define __inline
11
12 /* Following intrinsics require immediate arguments. */
13
14 /* ammintrin.h */
15 #define __builtin_ia32_extrqi(X, I, L)  __builtin_ia32_extrqi(X, 1, 1)
16 #define __builtin_ia32_insertqi(X, Y, I, L) __builtin_ia32_insertqi(X, Y, 1, 1)
17
18 /* smmintrin.h */
19 #define __builtin_ia32_pblendw128(X, Y, M) __builtin_ia32_pblendw128 (X, Y, 1)
20 #define __builtin_ia32_blendps(X, Y, M) __builtin_ia32_blendps(X, Y, 1)
21 #define __builtin_ia32_blendpd(X, Y, M) __builtin_ia32_blendpd(X, Y, 1)
22 #define __builtin_ia32_dpps(X, Y, M) __builtin_ia32_dpps(X, Y, 1)
23 #define __builtin_ia32_dppd(X, Y, M) __builtin_ia32_dppd(X, Y, 1)
24 #define __builtin_ia32_insertps128(D, S, N) __builtin_ia32_insertps128(D, S, 1)
25 #define __builtin_ia32_vec_ext_v4sf(X, N) __builtin_ia32_vec_ext_v4sf(X, 1)
26 #define __builtin_ia32_vec_set_v16qi(D, S, N) __builtin_ia32_vec_set_v16qi(D, S, 1)
27 #define __builtin_ia32_vec_set_v4si(D, S, N) __builtin_ia32_vec_set_v4si(D, S, 1)
28 #define __builtin_ia32_vec_set_v2di(D, S, N) __builtin_ia32_vec_set_v2di(D, S, 1)
29 #define __builtin_ia32_vec_ext_v16qi(X, N) __builtin_ia32_vec_ext_v16qi(X, 1)
30 #define __builtin_ia32_vec_ext_v4si(X, N) __builtin_ia32_vec_ext_v4si(X, 1)
31 #define __builtin_ia32_vec_ext_v2di(X, N) __builtin_ia32_vec_ext_v2di(X, 1)
32 #define __builtin_ia32_roundpd(V, M) __builtin_ia32_roundpd(V, 1)
33 #define __builtin_ia32_roundsd(D, V, M) __builtin_ia32_roundsd(D, V, 1)
34 #define __builtin_ia32_roundps(V, M) __builtin_ia32_roundps(V, 1)
35 #define __builtin_ia32_roundss(D, V, M) __builtin_ia32_roundss(D, V, 1)
36 #define __builtin_ia32_mpsadbw128(X, Y, M) __builtin_ia32_mpsadbw128(X, Y, 1)
37
38 /* tmmintrin.h */
39 #define __builtin_ia32_palignr128(X, Y, N) __builtin_ia32_palignr128(X, Y, 8)
40 #define __builtin_ia32_palignr(X, Y, N) __builtin_ia32_palignr(X, Y, 8)
41
42 /* emmintrin.h */
43 #define __builtin_ia32_psllwi128(A, B) __builtin_ia32_psllwi128(A, 1)
44 #define __builtin_ia32_psrlqi128(A, B) __builtin_ia32_psrlqi128(A, 1)
45 #define __builtin_ia32_psrlwi128(A, B) __builtin_ia32_psrlwi128(A, 1)
46 #define __builtin_ia32_psrldi128(A, B) __builtin_ia32_psrldi128(A, 1)
47 #define __builtin_ia32_psrldqi128(A, B) __builtin_ia32_psrldqi128(A, 8)
48 #define __builtin_ia32_pslldqi128(A, B) __builtin_ia32_pslldqi128(A, 8)
49 #define __builtin_ia32_psrawi128(A, B) __builtin_ia32_psrawi128(A, 1)
50 #define __builtin_ia32_psradi128(A, B) __builtin_ia32_psradi128(A, 1)
51 #define __builtin_ia32_psllqi128(A, B) __builtin_ia32_psllqi128(A, 1)
52 #define __builtin_ia32_pslldi128(A, B) __builtin_ia32_pslldi128(A, 1)
53 #define __builtin_ia32_pshufhw(A, N) __builtin_ia32_pshufhw(A, 0)
54 #define __builtin_ia32_pshuflw(A, N) __builtin_ia32_pshuflw(A, 0)
55 #define __builtin_ia32_pshufd(A, N) __builtin_ia32_pshufd(A, 0)
56 #define __builtin_ia32_vec_set_v8hi(A, D, N) \
57   __builtin_ia32_vec_set_v8hi(A, D, 0)
58 #define __builtin_ia32_vec_ext_v8hi(A, N) __builtin_ia32_vec_ext_v8hi(A, 0)
59 #define __builtin_ia32_shufpd(A, B, N) __builtin_ia32_shufpd(A, B, 0)
60
61 /* xmmintrin.h */
62 #define __builtin_prefetch(P, A, I) __builtin_prefetch(P, A, _MM_HINT_NTA)
63 #define __builtin_ia32_pshufw(A, N) __builtin_ia32_pshufw(A, 0)
64 #define __builtin_ia32_vec_set_v4hi(A, D, N) \
65   __builtin_ia32_vec_set_v4hi(A, D, 0)
66 #define __builtin_ia32_vec_ext_v4hi(A, N) __builtin_ia32_vec_ext_v4hi(A, 0)
67 #define __builtin_ia32_shufps(A, B, N) __builtin_ia32_shufps(A, B, 0)
68
69 #include <ammintrin.h>
70 #include <smmintrin.h>