17332Sjkh/* { dg-do compile } */ 27332Sjkh/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8" } */ 37332Sjkh 47332Sjkh#include <mm_malloc.h> 57332Sjkh 67332Sjkh/* Test that the intrinsics compile with optimization. All of them 77332Sjkh are defined as inline functions in {,x,e,p,t,s,w,a}mmintrin.h, 87332Sjkh xopintrin.h, lwpintrin.h, popcntintrin.h and mm3dnow.h that 97332Sjkh reference the proper builtin functions. Defining away "extern" and 107332Sjkh "__inline" results in all of them being compiled as proper 117332Sjkh functions. */ 127332Sjkh 137332Sjkh#define extern 147332Sjkh#define __inline 1513765Smpp 167332Sjkh/* Following intrinsics require immediate arguments. */ 177332Sjkh 187332Sjkh/* ammintrin.h */ 197332Sjkh#define __builtin_ia32_extrqi(X, I, L) __builtin_ia32_extrqi(X, 1, 1) 207332Sjkh#define __builtin_ia32_insertqi(X, Y, I, L) __builtin_ia32_insertqi(X, Y, 1, 1) 217332Sjkh 227332Sjkh/* wmmintrin.h */ 237332Sjkh#define __builtin_ia32_aeskeygenassist128(X, C) __builtin_ia32_aeskeygenassist128(X, 1) 247332Sjkh#define __builtin_ia32_pclmulqdq128(X, Y, I) __builtin_ia32_pclmulqdq128(X, Y, 1) 257332Sjkh 267332Sjkh/* smmintrin.h */ 277332Sjkh#define __builtin_ia32_roundpd(V, M) __builtin_ia32_roundpd(V, 1) 2850477Speter#define __builtin_ia32_roundsd(D, V, M) __builtin_ia32_roundsd(D, V, 1) 297332Sjkh#define __builtin_ia32_roundps(V, M) __builtin_ia32_roundps(V, 1) 307332Sjkh#define __builtin_ia32_roundss(D, V, M) __builtin_ia32_roundss(D, V, 1) 317332Sjkh 327332Sjkh#define __builtin_ia32_pblendw128(X, Y, M) __builtin_ia32_pblendw128 (X, Y, 1) 337332Sjkh#define __builtin_ia32_blendps(X, Y, M) __builtin_ia32_blendps(X, Y, 1) 347332Sjkh#define __builtin_ia32_blendpd(X, Y, M) __builtin_ia32_blendpd(X, Y, 1) 357332Sjkh#define __builtin_ia32_dpps(X, Y, M) __builtin_ia32_dpps(X, Y, 1) 367332Sjkh#define __builtin_ia32_dppd(X, Y, M) __builtin_ia32_dppd(X, Y, 1) 377332Sjkh#define __builtin_ia32_insertps128(D, S, N) __builtin_ia32_insertps128(D, S, 1) 387332Sjkh#define __builtin_ia32_vec_ext_v4sf(X, N) __builtin_ia32_vec_ext_v4sf(X, 1) 397332Sjkh#define __builtin_ia32_vec_set_v16qi(D, S, N) __builtin_ia32_vec_set_v16qi(D, S, 1) 407332Sjkh#define __builtin_ia32_vec_set_v4si(D, S, N) __builtin_ia32_vec_set_v4si(D, S, 1) 417332Sjkh#define __builtin_ia32_vec_set_v2di(D, S, N) __builtin_ia32_vec_set_v2di(D, S, 1) 427332Sjkh#define __builtin_ia32_vec_ext_v16qi(X, N) __builtin_ia32_vec_ext_v16qi(X, 1) 437332Sjkh#define __builtin_ia32_vec_ext_v4si(X, N) __builtin_ia32_vec_ext_v4si(X, 1) 447332Sjkh#define __builtin_ia32_vec_ext_v2di(X, N) __builtin_ia32_vec_ext_v2di(X, 1) 457332Sjkh#define __builtin_ia32_mpsadbw128(X, Y, M) __builtin_ia32_mpsadbw128(X, Y, 1) 467332Sjkh#define __builtin_ia32_pcmpistrm128(X, Y, M) \ 477332Sjkh __builtin_ia32_pcmpistrm128(X, Y, 1) 487332Sjkh#define __builtin_ia32_pcmpistri128(X, Y, M) \ 497332Sjkh __builtin_ia32_pcmpistri128(X, Y, 1) 507332Sjkh#define __builtin_ia32_pcmpestrm128(X, LX, Y, LY, M) \ 517332Sjkh __builtin_ia32_pcmpestrm128(X, LX, Y, LY, 1) 527332Sjkh#define __builtin_ia32_pcmpestri128(X, LX, Y, LY, M) \ 537332Sjkh __builtin_ia32_pcmpestri128(X, LX, Y, LY, 1) 547332Sjkh#define __builtin_ia32_pcmpistria128(X, Y, M) \ 557332Sjkh __builtin_ia32_pcmpistria128(X, Y, 1) 567332Sjkh#define __builtin_ia32_pcmpistric128(X, Y, M) \ 577332Sjkh __builtin_ia32_pcmpistric128(X, Y, 1) 587332Sjkh#define __builtin_ia32_pcmpistrio128(X, Y, M) \ 597332Sjkh __builtin_ia32_pcmpistrio128(X, Y, 1) 607332Sjkh#define __builtin_ia32_pcmpistris128(X, Y, M) \ 617332Sjkh __builtin_ia32_pcmpistris128(X, Y, 1) 627332Sjkh#define __builtin_ia32_pcmpistriz128(X, Y, M) \ 637332Sjkh __builtin_ia32_pcmpistriz128(X, Y, 1) 647332Sjkh#define __builtin_ia32_pcmpestria128(X, LX, Y, LY, M) \ 657332Sjkh __builtin_ia32_pcmpestria128(X, LX, Y, LY, 1) 667332Sjkh#define __builtin_ia32_pcmpestric128(X, LX, Y, LY, M) \ 677332Sjkh __builtin_ia32_pcmpestric128(X, LX, Y, LY, 1) 687332Sjkh#define __builtin_ia32_pcmpestrio128(X, LX, Y, LY, M) \ 697332Sjkh __builtin_ia32_pcmpestrio128(X, LX, Y, LY, 1) 707332Sjkh#define __builtin_ia32_pcmpestris128(X, LX, Y, LY, M) \ 717332Sjkh __builtin_ia32_pcmpestris128(X, LX, Y, LY, 1) 727332Sjkh#define __builtin_ia32_pcmpestriz128(X, LX, Y, LY, M) \ 737332Sjkh __builtin_ia32_pcmpestriz128(X, LX, Y, LY, 1) 747332Sjkh 757332Sjkh/* tmmintrin.h */ 767332Sjkh#define __builtin_ia32_palignr128(X, Y, N) __builtin_ia32_palignr128(X, Y, 8) 777332Sjkh#define __builtin_ia32_palignr(X, Y, N) __builtin_ia32_palignr(X, Y, 8) 787332Sjkh 797332Sjkh/* emmintrin.h */ 807332Sjkh#define __builtin_ia32_psrldqi128(A, B) __builtin_ia32_psrldqi128(A, 8) 817332Sjkh#define __builtin_ia32_pslldqi128(A, B) __builtin_ia32_pslldqi128(A, 8) 827332Sjkh#define __builtin_ia32_pshufhw(A, N) __builtin_ia32_pshufhw(A, 0) 837332Sjkh#define __builtin_ia32_pshuflw(A, N) __builtin_ia32_pshuflw(A, 0) 847332Sjkh#define __builtin_ia32_pshufd(A, N) __builtin_ia32_pshufd(A, 0) 857332Sjkh#define __builtin_ia32_vec_set_v8hi(A, D, N) \ 867332Sjkh __builtin_ia32_vec_set_v8hi(A, D, 0) 877332Sjkh#define __builtin_ia32_vec_ext_v8hi(A, N) __builtin_ia32_vec_ext_v8hi(A, 0) 887332Sjkh#define __builtin_ia32_shufpd(A, B, N) __builtin_ia32_shufpd(A, B, 0) 897332Sjkh 907332Sjkh/* xmmintrin.h */ 91143063Sjoerg#define __builtin_prefetch(P, A, I) __builtin_prefetch(P, A, _MM_HINT_NTA) 927332Sjkh#define __builtin_ia32_pshufw(A, N) __builtin_ia32_pshufw(A, 0) 937332Sjkh#define __builtin_ia32_vec_set_v4hi(A, D, N) \ 947332Sjkh __builtin_ia32_vec_set_v4hi(A, D, 0) 957332Sjkh#define __builtin_ia32_vec_ext_v4hi(A, N) __builtin_ia32_vec_ext_v4hi(A, 0) 967332Sjkh#define __builtin_ia32_shufps(A, B, N) __builtin_ia32_shufps(A, B, 0) 977332Sjkh 987332Sjkh/* immintrin.h */ 997332Sjkh#define __builtin_ia32_blendpd256(X, Y, M) __builtin_ia32_blendpd256(X, Y, 1) 1007332Sjkh#define __builtin_ia32_blendps256(X, Y, M) __builtin_ia32_blendps256(X, Y, 1) 1017332Sjkh#define __builtin_ia32_dpps256(X, Y, M) __builtin_ia32_dpps256(X, Y, 1) 102143063Sjoerg#define __builtin_ia32_shufpd256(X, Y, M) __builtin_ia32_shufpd256(X, Y, 1) 1037332Sjkh#define __builtin_ia32_shufps256(X, Y, M) __builtin_ia32_shufps256(X, Y, 1) 1047332Sjkh#define __builtin_ia32_cmpsd(X, Y, O) __builtin_ia32_cmpsd(X, Y, 1) 1057332Sjkh#define __builtin_ia32_cmpss(X, Y, O) __builtin_ia32_cmpss(X, Y, 1) 1067332Sjkh#define __builtin_ia32_cmppd(X, Y, O) __builtin_ia32_cmppd(X, Y, 1) 1077332Sjkh#define __builtin_ia32_cmpps(X, Y, O) __builtin_ia32_cmpps(X, Y, 1) 1087332Sjkh#define __builtin_ia32_cmppd256(X, Y, O) __builtin_ia32_cmppd256(X, Y, 1) 109143063Sjoerg#define __builtin_ia32_cmpps256(X, Y, O) __builtin_ia32_cmpps256(X, Y, 1) 1107332Sjkh#define __builtin_ia32_vextractf128_pd256(X, N) __builtin_ia32_vextractf128_pd256(X, 1) 1117332Sjkh#define __builtin_ia32_vextractf128_ps256(X, N) __builtin_ia32_vextractf128_ps256(X, 1) 1127332Sjkh#define __builtin_ia32_vextractf128_si256(X, N) __builtin_ia32_vextractf128_si256(X, 1) 1137332Sjkh#define __builtin_ia32_vpermilpd(X, N) __builtin_ia32_vpermilpd(X, 1) 1147332Sjkh#define __builtin_ia32_vpermilpd256(X, N) __builtin_ia32_vpermilpd256(X, 1) 1157332Sjkh#define __builtin_ia32_vpermilps(X, N) __builtin_ia32_vpermilps(X, 1) 1167332Sjkh#define __builtin_ia32_vpermilps256(X, N) __builtin_ia32_vpermilps256(X, 1) 1177332Sjkh#define __builtin_ia32_vpermil2pd(X, Y, C, I) __builtin_ia32_vpermil2pd(X, Y, C, 1) 1187332Sjkh#define __builtin_ia32_vpermil2pd256(X, Y, C, I) __builtin_ia32_vpermil2pd256(X, Y, C, 1) 1197332Sjkh#define __builtin_ia32_vpermil2ps(X, Y, C, I) __builtin_ia32_vpermil2ps(X, Y, C, 1) 1207332Sjkh#define __builtin_ia32_vpermil2ps256(X, Y, C, I) __builtin_ia32_vpermil2ps256(X, Y, C, 1) 1217332Sjkh#define __builtin_ia32_vperm2f128_pd256(X, Y, C) __builtin_ia32_vperm2f128_pd256(X, Y, 1) 1227332Sjkh#define __builtin_ia32_vperm2f128_ps256(X, Y, C) __builtin_ia32_vperm2f128_ps256(X, Y, 1) 1237332Sjkh#define __builtin_ia32_vperm2f128_si256(X, Y, C) __builtin_ia32_vperm2f128_si256(X, Y, 1) 1247332Sjkh#define __builtin_ia32_vinsertf128_pd256(X, Y, C) __builtin_ia32_vinsertf128_pd256(X, Y, 1) 1257332Sjkh#define __builtin_ia32_vinsertf128_ps256(X, Y, C) __builtin_ia32_vinsertf128_ps256(X, Y, 1) 1267332Sjkh#define __builtin_ia32_vinsertf128_si256(X, Y, C) __builtin_ia32_vinsertf128_si256(X, Y, 1) 1277332Sjkh#define __builtin_ia32_roundpd256(V, M) __builtin_ia32_roundpd256(V, 1) 1287332Sjkh#define __builtin_ia32_roundps256(V, M) __builtin_ia32_roundps256(V, 1) 1297332Sjkh 1307332Sjkh/* xopintrin.h */ 1317332Sjkh#define __builtin_ia32_vprotbi(A, B) __builtin_ia32_vprotbi(A,1) 1327332Sjkh#define __builtin_ia32_vprotwi(A, B) __builtin_ia32_vprotwi(A,1) 1337332Sjkh#define __builtin_ia32_vprotdi(A, B) __builtin_ia32_vprotdi(A,1) 1347332Sjkh#define __builtin_ia32_vprotqi(A, B) __builtin_ia32_vprotqi(A,1) 1357332Sjkh 1367332Sjkh/* lwpintrin.h */ 137143063Sjoerg#define __builtin_ia32_lwpval32(D2, D1, F) __builtin_ia32_lwpval32 (D2, D1, 1) 1387332Sjkh#define __builtin_ia32_lwpval64(D2, D1, F) __builtin_ia32_lwpval64 (D2, D1, 1) 1397332Sjkh#define __builtin_ia32_lwpins32(D2, D1, F) __builtin_ia32_lwpins32 (D2, D1, 1) 140#define __builtin_ia32_lwpins64(D2, D1, F) __builtin_ia32_lwpins64 (D2, D1, 1) 141 142#pragma GCC target ("3dnow,sse4,sse4a,aes,pclmul,xop,abm,popcnt,lwp") 143#include <wmmintrin.h> 144#include <smmintrin.h> 145#include <mm3dnow.h> 146#include <x86intrin.h> 147