xopintrin.h revision 239462
11541Srgrimes/*===---- xopintrin.h - FMA4 intrinsics ------------------------------------===
21541Srgrimes *
31541Srgrimes * Permission is hereby granted, free of charge, to any person obtaining a copy
41541Srgrimes * of this software and associated documentation files (the "Software"), to deal
51541Srgrimes * in the Software without restriction, including without limitation the rights
61541Srgrimes * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
71541Srgrimes * copies of the Software, and to permit persons to whom the Software is
81541Srgrimes * furnished to do so, subject to the following conditions:
91541Srgrimes *
101541Srgrimes * The above copyright notice and this permission notice shall be included in
111541Srgrimes * all copies or substantial portions of the Software.
121541Srgrimes *
131541Srgrimes * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
141541Srgrimes * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
151541Srgrimes * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
161541Srgrimes * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
171541Srgrimes * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
181541Srgrimes * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
191541Srgrimes * THE SOFTWARE.
201541Srgrimes *
211541Srgrimes *===-----------------------------------------------------------------------===
221541Srgrimes */
231541Srgrimes
241541Srgrimes#ifndef __X86INTRIN_H
251541Srgrimes#error "Never use <fma4intrin.h> directly; include <x86intrin.h> instead."
261541Srgrimes#endif
271541Srgrimes
281541Srgrimes#ifndef __XOPINTRIN_H
291541Srgrimes#define __XOPINTRIN_H
301541Srgrimes
311541Srgrimes#ifndef __XOP__
321541Srgrimes# error "XOP instruction set is not enabled"
3314505Shsu#else
3450477Speter
351541Srgrimes#include <fma4intrin.h>
361541Srgrimes
372165Spaulstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
382165Spaul_mm_maccs_epi16(__m128i __A, __m128i __B, __m128i __C)
392165Spaul{
40101848Srwatson  return (__m128i)__builtin_ia32_vpmacssww((__v8hi)__A, (__v8hi)__B, (__v8hi)__C);
4115492Sbde}
4270834Swollman
431541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
441541Srgrimes_mm_macc_epi16(__m128i __A, __m128i __B, __m128i __C)
451541Srgrimes{
461541Srgrimes  return (__m128i)__builtin_ia32_vpmacsww((__v8hi)__A, (__v8hi)__B, (__v8hi)__C);
471541Srgrimes}
481541Srgrimes
491541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
5036079Swollman_mm_maccsd_epi16(__m128i __A, __m128i __B, __m128i __C)
5136079Swollman{
5295552Stanimura  return (__m128i)__builtin_ia32_vpmacsswd((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
5395552Stanimura}
5495552Stanimura
5595552Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
5695552Stanimura_mm_maccd_epi16(__m128i __A, __m128i __B, __m128i __C)
5797658Stanimura{
5897658Stanimura  return (__m128i)__builtin_ia32_vpmacswd((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
5995552Stanimura}
6097658Stanimura
6197658Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6297658Stanimura_mm_maccs_epi32(__m128i __A, __m128i __B, __m128i __C)
6397658Stanimura{
6495552Stanimura  return (__m128i)__builtin_ia32_vpmacssdd((__v4si)__A, (__v4si)__B, (__v4si)__C);
651541Srgrimes}
6697658Stanimura
6797658Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6897658Stanimura_mm_macc_epi32(__m128i __A, __m128i __B, __m128i __C)
6997658Stanimura{
7097658Stanimura  return (__m128i)__builtin_ia32_vpmacsdd((__v4si)__A, (__v4si)__B, (__v4si)__C);
7198993Salfred}
7297658Stanimura
731541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7413765Smpp_mm_maccslo_epi32(__m128i __A, __m128i __B, __m128i __C)
751541Srgrimes{
761541Srgrimes  return (__m128i)__builtin_ia32_vpmacssdql((__v4si)__A, (__v4si)__B, (__v2di)__C);
7778913Sjlemon}
7878913Sjlemon
791541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8078913Sjlemon_mm_macclo_epi32(__m128i __A, __m128i __B, __m128i __C)
811541Srgrimes{
821541Srgrimes  return (__m128i)__builtin_ia32_vpmacsdql((__v4si)__A, (__v4si)__B, (__v2di)__C);
831541Srgrimes}
8497658Stanimura
8597658Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8697658Stanimura_mm_maccshi_epi32(__m128i __A, __m128i __B, __m128i __C)
8797658Stanimura{
8897658Stanimura  return (__m128i)__builtin_ia32_vpmacssdqh((__v4si)__A, (__v4si)__B, (__v2di)__C);
8997658Stanimura}
9018787Spst
9197658Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9297658Stanimura_mm_macchi_epi32(__m128i __A, __m128i __B, __m128i __C)
9397658Stanimura{
9497658Stanimura  return (__m128i)__builtin_ia32_vpmacsdqh((__v4si)__A, (__v4si)__B, (__v2di)__C);
9541087Struckman}
9697658Stanimura
9797658Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
981541Srgrimes_mm_maddsd_epi16(__m128i __A, __m128i __B, __m128i __C)
991541Srgrimes{
1001541Srgrimes  return (__m128i)__builtin_ia32_vpmadcsswd((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
10183421Sobrien}
102100591Sjdp
103117708Srobertstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
10497658Stanimura_mm_maddd_epi16(__m128i __A, __m128i __B, __m128i __C)
105100591Sjdp{
106100591Sjdp  return (__m128i)__builtin_ia32_vpmadcswd((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
107100591Sjdp}
108100591Sjdp
109106313Skbyancstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
110100591Sjdp_mm_haddw_epi8(__m128i __A)
111100591Sjdp{
11297658Stanimura  return (__m128i)__builtin_ia32_vphaddbw((__v16qi)__A);
1131541Srgrimes}
1141541Srgrimes
1151541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1161541Srgrimes_mm_haddd_epi8(__m128i __A)
1171541Srgrimes{
1181541Srgrimes  return (__m128i)__builtin_ia32_vphaddbd((__v16qi)__A);
1191541Srgrimes}
12036527Speter
1211541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
12255943Sjasone_mm_haddq_epi8(__m128i __A)
12359288Sjlemon{
1241541Srgrimes  return (__m128i)__builtin_ia32_vphaddbq((__v16qi)__A);
12597658Stanimura}
12697658Stanimura
12797658Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
128100989Srwatson_mm_haddd_epi16(__m128i __A)
129100989Srwatson{
13038482Swollman  return (__m128i)__builtin_ia32_vphaddwd((__v8hi)__A);
13197658Stanimura}
13297658Stanimura
13397658Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
13497658Stanimura_mm_haddq_epi16(__m128i __A)
13597658Stanimura{
13697658Stanimura  return (__m128i)__builtin_ia32_vphaddwq((__v8hi)__A);
13797658Stanimura}
1381541Srgrimes
1391541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1401541Srgrimes_mm_haddq_epi32(__m128i __A)
1411541Srgrimes{
1421541Srgrimes  return (__m128i)__builtin_ia32_vphadddq((__v4si)__A);
14314547Sdg}
14414547Sdg
14514547Sdgstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
14614547Sdg_mm_haddw_epu8(__m128i __A)
14714547Sdg{
14814547Sdg  return (__m128i)__builtin_ia32_vphaddubw((__v16qi)__A);
14914547Sdg}
1501541Srgrimes
15114547Sdgstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
15214547Sdg_mm_haddd_epu8(__m128i __A)
15314547Sdg{
1541541Srgrimes  return (__m128i)__builtin_ia32_vphaddubd((__v16qi)__A);
15514547Sdg}
15614547Sdg
15743196Sfennerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1581541Srgrimes_mm_haddq_epu8(__m128i __A)
15936079Swollman{
16036079Swollman  return (__m128i)__builtin_ia32_vphaddubq((__v16qi)__A);
16136079Swollman}
16283045Sobrien
16336079Swollmanstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
16436079Swollman_mm_haddd_epu16(__m128i __A)
16536079Swollman{
16636079Swollman  return (__m128i)__builtin_ia32_vphadduwd((__v8hi)__A);
16736079Swollman}
16836079Swollman
16936079Swollmanstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
17036079Swollman_mm_haddq_epu16(__m128i __A)
17136079Swollman{
17236079Swollman  return (__m128i)__builtin_ia32_vphadduwq((__v8hi)__A);
17336079Swollman}
17436079Swollman
17536079Swollmanstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
17636079Swollman_mm_haddq_epu32(__m128i __A)
17736079Swollman{
17836079Swollman  return (__m128i)__builtin_ia32_vphaddudq((__v4si)__A);
17983421Sobrien}
180100591Sjdp
181100591Sjdpstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
182100591Sjdp_mm_hsubw_epi8(__m128i __A)
183100591Sjdp{
184100591Sjdp  return (__m128i)__builtin_ia32_vphsubbw((__v16qi)__A);
185100591Sjdp}
18636079Swollman
18736079Swollmanstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
18836079Swollman_mm_hsubd_epi16(__m128i __A)
18936079Swollman{
19014547Sdg  return (__m128i)__builtin_ia32_vphsubwd((__v8hi)__A);
1911541Srgrimes}
1921541Srgrimes
1931541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1941541Srgrimes_mm_hsubq_epi32(__m128i __A)
1951541Srgrimes{
19636527Speter  return (__m128i)__builtin_ia32_vphsubdq((__v4si)__A);
19736527Speter}
19855943Sjasone
19959288Sjlemonstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
20036527Speter_mm_cmov_si128(__m128i __A, __m128i __B, __m128i __C)
20136527Speter{
2021541Srgrimes  return (__m128i)__builtin_ia32_vpcmov(__A, __B, __C);
2031541Srgrimes}
2041541Srgrimes
2051541Srgrimesstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
2061541Srgrimes_mm256_cmov_si256(__m256i __A, __m256i __B, __m256i __C)
2071541Srgrimes{
2081541Srgrimes  return (__m256i)__builtin_ia32_vpcmov_256(__A, __B, __C);
2091541Srgrimes}
2101541Srgrimes
2111541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
2121541Srgrimes_mm_perm_epi8(__m128i __A, __m128i __B, __m128i __C)
2131541Srgrimes{
2141541Srgrimes  return (__m128i)__builtin_ia32_vpperm((__v16qi)__A, (__v16qi)__B, (__v16qi)__C);
2151541Srgrimes}
2161541Srgrimes
2171541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
2181541Srgrimes_mm_rot_epi8(__m128i __A, __m128i __B)
21970536Sphk{
2201541Srgrimes  return (__m128i)__builtin_ia32_vprotb((__v16qi)__A, (__v16qi)__B);
2211541Srgrimes}
2221541Srgrimes
2233304Sphkstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
2241541Srgrimes_mm_rot_epi16(__m128i __A, __m128i __B)
2253304Sphk{
2261541Srgrimes  return (__m128i)__builtin_ia32_vprotw((__v8hi)__A, (__v8hi)__B);
2271541Srgrimes}
2281541Srgrimes
2291541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
2301541Srgrimes_mm_rot_epi32(__m128i __A, __m128i __B)
2311541Srgrimes{
232109098Stjr  return (__m128i)__builtin_ia32_vprotd((__v4si)__A, (__v4si)__B);
233109098Stjr}
234106313Skbyanc
2351541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
2361541Srgrimes_mm_rot_epi64(__m128i __A, __m128i __B)
2371541Srgrimes{
2381541Srgrimes  return (__m128i)__builtin_ia32_vprotq((__v2di)__A, (__v2di)__B);
2391541Srgrimes}
2401541Srgrimes
2411541Srgrimes#define _mm_roti_epi8(A, N) __extension__ ({ \
2421541Srgrimes  __m128i __A = (A); \
243109098Stjr  (__m128i)__builtin_ia32_vprotbi((__v16qi)__A, (N)); })
244109098Stjr
245106313Skbyanc#define _mm_roti_epi16(A, N) __extension__ ({ \
2461541Srgrimes  __m128i __A = (A); \
2471541Srgrimes  (__m128i)__builtin_ia32_vprotwi((__v8hi)__A, (N)); })
2481541Srgrimes
2491541Srgrimes#define _mm_roti_epi32(A, N) __extension__ ({ \
2501541Srgrimes  __m128i __A = (A); \
2511541Srgrimes  (__m128i)__builtin_ia32_vprotdi((__v4si)__A, (N)); })
2521541Srgrimes
2531541Srgrimes#define _mm_roti_epi64(A, N) __extension__ ({ \
2541541Srgrimes  __m128i __A = (A); \
2551541Srgrimes  (__m128i)__builtin_ia32_vprotqi((__v2di)__A, (N)); })
2561541Srgrimes
257111119Simpstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
2581541Srgrimes_mm_shl_epi8(__m128i __A, __m128i __B)
2591541Srgrimes{
2601541Srgrimes  return (__m128i)__builtin_ia32_vpshlb((__v16qi)__A, (__v16qi)__B);
2611541Srgrimes}
2621541Srgrimes
2631541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
2641541Srgrimes_mm_shl_epi16(__m128i __A, __m128i __B)
265111748Sdes{
2661541Srgrimes  return (__m128i)__builtin_ia32_vpshlw((__v8hi)__A, (__v8hi)__B);
2671541Srgrimes}
2681541Srgrimes
26986487Sdillonstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
27086487Sdillon_mm_shl_epi32(__m128i __A, __m128i __B)
27186487Sdillon{
27286487Sdillon  return (__m128i)__builtin_ia32_vpshld((__v4si)__A, (__v4si)__B);
27386487Sdillon}
27497658Stanimura
27597658Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
27686487Sdillon_mm_shl_epi64(__m128i __A, __m128i __B)
27786487Sdillon{
27897658Stanimura  return (__m128i)__builtin_ia32_vpshlq((__v2di)__A, (__v2di)__B);
27989318Salfred}
28097658Stanimura
28197658Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
28297658Stanimura_mm_sha_epi8(__m128i __A, __m128i __B)
28386487Sdillon{
28486487Sdillon  return (__m128i)__builtin_ia32_vpshab((__v16qi)__A, (__v16qi)__B);
28597658Stanimura}
28689318Salfred
28797658Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
28886487Sdillon_mm_sha_epi16(__m128i __A, __m128i __B)
28986487Sdillon{
29098385Stanimura  return (__m128i)__builtin_ia32_vpshaw((__v8hi)__A, (__v8hi)__B);
29198385Stanimura}
29298385Stanimura
29398385Stanimurastatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
2941541Srgrimes_mm_sha_epi32(__m128i __A, __m128i __B)
29598385Stanimura{
29698385Stanimura  return (__m128i)__builtin_ia32_vpshad((__v4si)__A, (__v4si)__B);
29798385Stanimura}
29898385Stanimura
2991541Srgrimesstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
30055205Speter_mm_sha_epi64(__m128i __A, __m128i __B)
30131927Sbde{
30238482Swollman  return (__m128i)__builtin_ia32_vpshaq((__v2di)__A, (__v2di)__B);
30338482Swollman}
30438482Swollman
30538482Swollman#define _mm_com_epu8(A, B, N) __extension__ ({ \
30638482Swollman  __m128i __A = (A); \
30738482Swollman  __m128i __B = (B); \
30838482Swollman  (__m128i)__builtin_ia32_vpcomub((__v16qi)__A, (__v16qi)__B, (N)); })
30938482Swollman
31038482Swollman#define _mm_com_epu16(A, B, N) __extension__ ({ \
31138482Swollman  __m128i __A = (A); \
31238482Swollman  __m128i __B = (B); \
31395959Salfred  (__m128i)__builtin_ia32_vpcomuw((__v8hi)__A, (__v8hi)__B, (N)); })
31438482Swollman
31538482Swollman#define _mm_com_epu32(A, B, N) __extension__ ({ \
31640931Sdg  __m128i __A = (A); \
31760938Sjake  __m128i __B = (B); \
31840931Sdg  (__m128i)__builtin_ia32_vpcomud((__v4si)__A, (__v4si)__B, (N)); })
31940931Sdg
32040931Sdg#define _mm_com_epu64(A, B, N) __extension__ ({ \
32140931Sdg  __m128i __A = (A); \
32261837Salfred  __m128i __B = (B); \
32361837Salfred  (__m128i)__builtin_ia32_vpcomuq((__v2di)__A, (__v2di)__B, (N)); })
32461837Salfred
32592719Salfred#define _mm_com_epi8(A, B, N) __extension__ ({ \
32661837Salfred  __m128i __A = (A); \
32792719Salfred  __m128i __B = (B); \
32861837Salfred  (__m128i)__builtin_ia32_vpcomb((__v16qi)__A, (__v16qi)__B, (N)); })
32992719Salfred
33095959Salfred#define _mm_com_epi16(A, B, N) __extension__ ({ \
33182656Sjlemon  __m128i __A = (A); \
33261837Salfred  __m128i __B = (B); \
33331927Sbde  (__m128i)__builtin_ia32_vpcomw((__v8hi)__A, (__v8hi)__B, (N)); })
33495959Salfred
33531927Sbde#define _mm_com_epi32(A, B, N) __extension__ ({ \
33631927Sbde  __m128i __A = (A); \
33731927Sbde  __m128i __B = (B); \
33831927Sbde  (__m128i)__builtin_ia32_vpcomd((__v4si)__A, (__v4si)__B, (N)); })
33995959Salfred
3402112Swollman#define _mm_com_epi64(A, B, N) __extension__ ({ \
34195959Salfred  __m128i __A = (A); \
34236079Swollman  __m128i __B = (B); \
34314505Shsu  (__m128i)__builtin_ia32_vpcomq((__v2di)__A, (__v2di)__B, (N)); })
34415492Sbde
34515492Sbde#define _mm_permute2_pd(X, Y, C, I) __extension__ ({ \
34632995Sbde  __m128d __X = (X); \
34732995Sbde  __m128d __Y = (Y); \
34815492Sbde  __m128i __C = (C); \
3491541Srgrimes  (__m128d)__builtin_ia32_vpermil2pd((__v2df)__X, (__v2df)__Y, \
3503304Sphk                                     (__v2di)__C, (I)); })
3513304Sphk
35292719Salfred#define _mm256_permute2_pd(X, Y, C, I) __extension__ ({ \
35392719Salfred  __m256d __X = (X); \
35492719Salfred  __m256d __Y = (Y); \
35592719Salfred  __m256i __C = (C); \
35692719Salfred  (__m256d)__builtin_ia32_vpermil2pd256((__v4df)__X, (__v4df)__Y, \
35792719Salfred                                        (__v4di)__C, (I)); })
35892719Salfred
35992719Salfred#define _mm_permute2_ps(X, Y, C, I) __extension__ ({ \
36092719Salfred  __m128 __X = (X); \
36192719Salfred  __m128 __Y = (Y); \
36292719Salfred  __m128i __C = (C); \
36319670Sbde  (__m128)__builtin_ia32_vpermil2ps((__v4sf)__X, (__v4sf)__Y, \
36492719Salfred                                    (__v4si)__C, (I)); })
36592719Salfred
36692719Salfred#define _mm256_permute2_ps(X, Y, C, I) __extension__ ({ \
36792719Salfred  __m256 __X = (X); \
36892719Salfred  __m256 __Y = (Y); \
36992719Salfred  __m256i __C = (C); \
37092719Salfred  (__m256)__builtin_ia32_vpermil2ps256((__v8sf)__X, (__v8sf)__Y, \
37193008Sbde                                       (__v8si)__C, (I)); })
37292719Salfred
37392719Salfredstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
374101842Sdg_mm_frcz_ss(__m128 __A)
375112778Salc{
376101842Sdg  return (__m128)__builtin_ia32_vfrczss((__v4sf)__A);
37792719Salfred}
37892719Salfred
37992719Salfredstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
38095959Salfred_mm_frcz_sd(__m128d __A)
38192719Salfred{
38292719Salfred  return (__m128d)__builtin_ia32_vfrczsd((__v2df)__A);
38392719Salfred}
38492719Salfred
38592719Salfredstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
38692719Salfred_mm_frcz_ps(__m128 __A)
38792719Salfred{
38898849Sken  return (__m128)__builtin_ia32_vfrczps((__v4sf)__A);
38992719Salfred}
39092719Salfred
391106326Salcstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
39292719Salfred_mm_frcz_pd(__m128d __A)
39392719Salfred{
39492719Salfred  return (__m128d)__builtin_ia32_vfrczpd((__v2df)__A);
39592719Salfred}
39692719Salfred
39792719Salfredstatic __inline__ __m256 __attribute__((__always_inline__, __nodebug__))
39892719Salfred_mm256_frcz_ps(__m256 __A)
39992719Salfred{
40092719Salfred  return (__m256)__builtin_ia32_vfrczps256((__v8sf)__A);
40114505Shsu}
40292719Salfred
40393008Sbdestatic __inline__ __m256d __attribute__((__always_inline__, __nodebug__))
404118453Shsu_mm256_frcz_pd(__m256d __A)
40553541Sshin{
40653541Sshin  return (__m256d)__builtin_ia32_vfrczpd256((__v4df)__A);
40792719Salfred}
40892719Salfred
40992719Salfred#endif /* __XOP__ */
41053541Sshin
411101983Srwatson#endif /* __XOPINTRIN_H */
41293008Sbde