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