You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

问询Clang内置函数__builtin_neon_vqtbl4q_v的参数差异及用法

关于Clang内置函数__builtin_neon_vqtbl4q_v的使用疑问

我无法从ChatGPT和Gemini获取Clang内置函数__builtin_neon_vqtbl4q_v的有效可用示例,现寻求有该函数使用经验的开发者解答。

LLM已收录Stack Overflow全量信息却仍无法给出答案,说明该内置函数缺乏实用文档。我已耗时2小时以上查找合理文档,但一无所获。此外,因64位嵌入式特殊场景的构建系统限制,不能引入<arm_neon.h>(会带来冗余内容),只能直接使用该内置函数。

我理解val[4]代表四个128b向量(总计512b),但仍不清楚__a和__c参数的作用——修改__a的值并未产生任何影响,我猜测__c是掩码,但无法确认。

测试代码如下:

#include <stdio.h>
#include <stdlib.h>

typedef char v16 __attribute((vector_size(16),aligned(1)));
typedef char v64 __attribute((vector_size(64),aligned(1)));

static void pv(v64 v) { int i; for(i=0;i<sizeof(v64);i++) {printf("%d,%s", v[i], (i+1)%8?"":" ");} putchar('\n');}

static v64 gather(char*s,v64 x){
 v16 r[4];
 for(int i=0;i<4;i++) {
    r[i]=__builtin_neon_vqtbx4q_v((v16){0},*(v16*)(s+0),*(v16*)(s+16),*(v16*)(s+32),*(v16*)(s+48),((v16*)&x)[i],48);
 }
 return *(v64*)&r;
}

int main(int argc, char* argv[]) {
  int i=0;
  if(argc>1){i=atoi(argv[1]);} 
  
  v64 t = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
          32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
  v64 m = {0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31,
          32,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,63};

  pv(t); pv(m);
  pv(gather(&t,m));
  return 0;
}

测试输出:

0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31, 32,33,34,35,36,37,38,39, 40,41,42,43,44,45,46,47, 48,49,50,51,52,53,54,55, 56,57,58,59,60,61,62,63, 
0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31, 32,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,63, 
0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31, 32,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,63, 

内容的提问来源于stack exchange,提问作者AG1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:32:33