首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCC有没有内置的AVX512操作?

GCC有没有内置的AVX512操作?
EN

Stack Overflow用户
提问于 2019-12-01 01:30:22
回答 1查看 471关注 0票数 3

我希望找到像这样的函数

__builtin_ia32_fmaddps512

在最近的一次GCC启用512位AVX512寄存器的使用方式中,可以使用256位的AVX2寄存器,但根据手册,它们在GCC 9.2中并不存在。这只是一个等待的问题,还是有一些政策原因导致它们不存在?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-01 03:39:42

AVX512内置函数需要一个掩码(可以是-1)。

可移植的固有_mm512_fmadd_ps (#include <immintrin.h>)在GCC9.1的标题中定义为:

代码语言:javascript
复制
extern __inline __m512
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_fmadd_ps (__m512 __A, __m512 __B, __m512 __C)
{
  return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
                                                   (__v16sf) __B,
                                                   (__v16sf) __C,
                                                   (__mmask16) -1,
                                                   _MM_FROUND_CUR_DIRECTION);
}

我通过在我的系统上查看/usr/lib/gcc/x86_64-pc-linux-gnu/9.1.0/include/avx512*.h找到了这个。(不要直接包含这些内容,只包含来自immintrin.h的内容)

IDK为什么要使用__builtin_ia32_vfmaddps512_mask而不是像_mm512_mask_fmadd_ps (合并到第一个操作数)或_mm512_mask3_fmadd_ps (合并到+c操作数)或_mm512_maskz_fmadd_ps (零掩码)这样的英特尔内部函数之一。

或者甚至是完整的_mm512_maskz_fmadd_round_ps,它也允许指定舍入覆盖和掩码。

但不管怎样,这就是如何在任何Intel内部函数(如果有)下找到真正的GCC内建函数的名称的方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59118562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档