ARM NEON 64bit 查找表替换
2024-09-04 16:50:03
没啥效果,如果表的长度在 64个uint8_t之类,应该可以提高查表速度,否则还是C来的快
#ifdef HAVE_NEON_AARCH64
void table_lookup_AArch64_neon(uint8_t* lookup_table, uint32_t length, uint8_t* input_ptr, uint8_t* output_ptr)
{
/* Load lookup table. */ uint8x16x4_t table0 = vld1q_u8_x4(lookup_table);
uint8x16x4_t table1 = vld1q_u8_x4(lookup_table+);
uint8x16x4_t table2 = vld1q_u8_x4(lookup_table+);
uint8x16x4_t table3 = vld1q_u8_x4(lookup_table+); uint8x16x4_t elements;
uint8x16_t src, dst;
uint8x16_t diff = vmovq_n_s8(); for(uint32_t i=; i<length; i=i+) {
uint8_t* ptr = input_ptr+i;
elements = vld1q_u8_x4(ptr);
for(uint8_t j=; j<; j++) {
dst = vqtbx4q_u8(dst, table0, src); src = vsubq_u8(src, diff);
dst = vqtbx4q_u8(dst, table1, src); src = vsubq_u8(src, diff);
dst = vqtbx4q_u8(dst, table2, src); src = vsubq_u8(src, diff);
elements.val[j] = vqtbx4q_u8(dst, table3, src);
}
vst1q_u8_x4(ptr, elements);
}
}
最新文章
- Material Design兼容包的使用
- LogBack,升级版的log4J
- (转载)ORA-14452:试图创建,更改或删除正在使用的临时表中的索引
- 基于swoole的网页一对一实时聊天
- vs代码段快捷键设置
- JAVA并发编程的艺术
- ascii转int,int在转回ascii原值
- 第三课 Spinner的使用
- 自定义PopupWindow 怎么设置PopupWindow的宽度充满全屏宽度
- 被误解的 MVC 和被神化的 MVVM
- 「C」 函数、运算、流程控制
- c++, 虚基派生 : 共同基类产生的二义性的解决办法
- 【转】c#引用类型与值类型的区别大盘点
- SharePoint 2010 中创建超链接到Pop-Up对话框
- lucene-SpanFirstQuery 和SpanNearQuery 跨度查询
- 整个IT界可分为13块大领域
- 用ASP.NET Core 2.0 建立规范的 REST API -- GET 和 POST
- Centos7安装配置Nginx
- Java开发笔记(三十二)字符型与整型相互转化
- 完成了Coursera的一个机器学习课程
热门文章
- spring异常 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderServlet
- 再议urlconnection和socket区别
- 代码设置UIButton文字、图片位置
- 阿里CI/CD、DevOps、分层自动化技术
- 安装Reshaper后Intellisense失效
- ios 抓包工具 ios青花瓷charles
- css 用 display: inline-block; 代替 float
- JAVA、Android与Cordova环境搭建
- pods 遇到的问题
- ACM算法整理(不断补充ing)