17feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper/*===---- fma4intrin.h - FMA4 intrinsics -----------------------------------===
27feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper *
37feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * Permission is hereby granted, free of charge, to any person obtaining a copy
47feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * of this software and associated documentation files (the "Software"), to deal
57feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * in the Software without restriction, including without limitation the rights
67feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
77feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * copies of the Software, and to permit persons to whom the Software is
87feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * furnished to do so, subject to the following conditions:
97feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper *
107feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * The above copyright notice and this permission notice shall be included in
117feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * all copies or substantial portions of the Software.
127feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper *
137feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
147feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
157feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
167feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
177feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
187feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
197feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper * THE SOFTWARE.
207feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper *
217feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper *===-----------------------------------------------------------------------===
227feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper */
237feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
247feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper#ifndef __X86INTRIN_H
257feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper#error "Never use <fma4intrin.h> directly; include <x86intrin.h> instead."
267feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper#endif
277feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
287feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper#ifndef __FMA4INTRIN_H
297feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper#define __FMA4INTRIN_H
307feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
317feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper#ifndef __FMA4__
327feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper# error "FMA4 instruction set is not enabled"
337feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper#else
347feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
357feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper#include <pmmintrin.h>
367feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
377feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
387feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_macc_ps(__m128 __A, __m128 __B, __m128 __C)
397feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
407feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128)__builtin_ia32_vfmaddps(__A, __B, __C);
417feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
427feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
437feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
447feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_macc_pd(__m128d __A, __m128d __B, __m128d __C)
457feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
467feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128d)__builtin_ia32_vfmaddpd(__A, __B, __C);
477feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
487feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
497feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
507feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_macc_ss(__m128 __A, __m128 __B, __m128 __C)
517feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
527feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128)__builtin_ia32_vfmaddss(__A, __B, __C);
537feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
547feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
557feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
567feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_macc_sd(__m128d __A, __m128d __B, __m128d __C)
577feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
587feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128d)__builtin_ia32_vfmaddsd(__A, __B, __C);
597feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
607feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
617feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
627feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_msub_ps(__m128 __A, __m128 __B, __m128 __C)
637feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
647feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128)__builtin_ia32_vfmsubps(__A, __B, __C);
657feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
667feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
677feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
687feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_msub_pd(__m128d __A, __m128d __B, __m128d __C)
697feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
707feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128d)__builtin_ia32_vfmsubpd(__A, __B, __C);
717feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
727feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
737feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
747feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_msub_ss(__m128 __A, __m128 __B, __m128 __C)
757feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
767feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128)__builtin_ia32_vfmsubss(__A, __B, __C);
777feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
787feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
797feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
807feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_msub_sd(__m128d __A, __m128d __B, __m128d __C)
817feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
827feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128d)__builtin_ia32_vfmsubsd(__A, __B, __C);
837feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
847feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
857feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
867feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_nmacc_ps(__m128 __A, __m128 __B, __m128 __C)
877feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
887feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128)__builtin_ia32_vfnmaddps(__A, __B, __C);
897feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
907feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
917feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
927feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_nmacc_pd(__m128d __A, __m128d __B, __m128d __C)
937feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
947feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128d)__builtin_ia32_vfnmaddpd(__A, __B, __C);
957feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
967feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
977feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
987feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_nmacc_ss(__m128 __A, __m128 __B, __m128 __C)
997feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1007feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128)__builtin_ia32_vfnmaddss(__A, __B, __C);
1017feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1027feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1037feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1047feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_nmacc_sd(__m128d __A, __m128d __B, __m128d __C)
1057feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1067feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128d)__builtin_ia32_vfnmaddsd(__A, __B, __C);
1077feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1087feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1097feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
1107feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_nmsub_ps(__m128 __A, __m128 __B, __m128 __C)
1117feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1127feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128)__builtin_ia32_vfnmsubps(__A, __B, __C);
1137feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1147feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1157feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1167feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_nmsub_pd(__m128d __A, __m128d __B, __m128d __C)
1177feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1187feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128d)__builtin_ia32_vfnmsubpd(__A, __B, __C);
1197feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1207feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1217feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
1227feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_nmsub_ss(__m128 __A, __m128 __B, __m128 __C)
1237feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1247feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128)__builtin_ia32_vfnmsubss(__A, __B, __C);
1257feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1267feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1277feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1287feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_nmsub_sd(__m128d __A, __m128d __B, __m128d __C)
1297feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1307feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128d)__builtin_ia32_vfnmsubsd(__A, __B, __C);
1317feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1327feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1337feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
1347feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_maddsub_ps(__m128 __A, __m128 __B, __m128 __C)
1357feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1367feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128)__builtin_ia32_vfmaddsubps(__A, __B, __C);
1377feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1387feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1397feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1407feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_maddsub_pd(__m128d __A, __m128d __B, __m128d __C)
1417feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1427feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128d)__builtin_ia32_vfmaddsubpd(__A, __B, __C);
1437feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1447feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1457feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
1467feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_msubadd_ps(__m128 __A, __m128 __B, __m128 __C)
1477feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1487feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128)__builtin_ia32_vfmsubaddps(__A, __B, __C);
1497feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1507feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1517feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1527feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm_msubadd_pd(__m128d __A, __m128d __B, __m128d __C)
1537feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1547feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m128d)__builtin_ia32_vfmsubaddpd(__A, __B, __C);
1557feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1567feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1577feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256 __attribute__((__always_inline__, __nodebug__))
1587feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_macc_ps(__m256 __A, __m256 __B, __m256 __C)
1597feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1607feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256)__builtin_ia32_vfmaddps256(__A, __B, __C);
1617feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1627feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1637feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256d __attribute__((__always_inline__, __nodebug__))
1647feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_macc_pd(__m256d __A, __m256d __B, __m256d __C)
1657feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1667feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256d)__builtin_ia32_vfmaddpd256(__A, __B, __C);
1677feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1687feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1697feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256 __attribute__((__always_inline__, __nodebug__))
1707feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_msub_ps(__m256 __A, __m256 __B, __m256 __C)
1717feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1727feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256)__builtin_ia32_vfmsubps256(__A, __B, __C);
1737feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1747feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1757feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256d __attribute__((__always_inline__, __nodebug__))
1767feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_msub_pd(__m256d __A, __m256d __B, __m256d __C)
1777feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1787feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256d)__builtin_ia32_vfmsubpd256(__A, __B, __C);
1797feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1807feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1817feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256 __attribute__((__always_inline__, __nodebug__))
1827feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_nmacc_ps(__m256 __A, __m256 __B, __m256 __C)
1837feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1847feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256)__builtin_ia32_vfnmaddps256(__A, __B, __C);
1857feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1867feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1877feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256d __attribute__((__always_inline__, __nodebug__))
1887feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_nmacc_pd(__m256d __A, __m256d __B, __m256d __C)
1897feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1907feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256d)__builtin_ia32_vfnmaddpd256(__A, __B, __C);
1917feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1927feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1937feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256 __attribute__((__always_inline__, __nodebug__))
1947feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_nmsub_ps(__m256 __A, __m256 __B, __m256 __C)
1957feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
1967feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256)__builtin_ia32_vfnmsubps256(__A, __B, __C);
1977feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
1987feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
1997feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256d __attribute__((__always_inline__, __nodebug__))
2007feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_nmsub_pd(__m256d __A, __m256d __B, __m256d __C)
2017feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
2027feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256d)__builtin_ia32_vfnmsubpd256(__A, __B, __C);
2037feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
2047feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
2057feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256 __attribute__((__always_inline__, __nodebug__))
2067feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_maddsub_ps(__m256 __A, __m256 __B, __m256 __C)
2077feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
2087feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256)__builtin_ia32_vfmaddsubps256(__A, __B, __C);
2097feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
2107feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
2117feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256d __attribute__((__always_inline__, __nodebug__))
2127feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_maddsub_pd(__m256d __A, __m256d __B, __m256d __C)
2137feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
2147feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256d)__builtin_ia32_vfmaddsubpd256(__A, __B, __C);
2157feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
2167feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
2177feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256 __attribute__((__always_inline__, __nodebug__))
2187feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_msubadd_ps(__m256 __A, __m256 __B, __m256 __C)
2197feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
2207feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256)__builtin_ia32_vfmsubaddps256(__A, __B, __C);
2217feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
2227feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
2237feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topperstatic __inline__ __m256d __attribute__((__always_inline__, __nodebug__))
2247feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper_mm256_msubadd_pd(__m256d __A, __m256d __B, __m256d __C)
2257feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper{
2267feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper  return (__m256d)__builtin_ia32_vfmsubaddpd256(__A, __B, __C);
2277feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper}
2287feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
2297feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper#endif /* __FMA4__ */
2307feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper
2317feb321af47e65ddfe88f44f5fd994bbeba53fcfCraig Topper#endif /* __FMA4INTRIN_H */
232