当前位置: 首页 > article >正文

AVX2指令集

__m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8)

        作用:imm8是一个mask(8bit)。这个函数会依据imm8的前后4个bit的值[0:3]和[4:7]确定输出dst的前128bit和后128bit使用a还是b的数据。

DEFINE SELECT4(src1, src2, control) {
	CASE(control[1:0]) OF
	0:	tmp[127:0] := src1[127:0]
	1:	tmp[127:0] := src1[255:128]
	2:	tmp[127:0] := src2[127:0]
	3:	tmp[127:0] := src2[255:128]
	ESAC
	IF control[3]
		tmp[127:0] := 0
	FI
	RETURN tmp[127:0]
}
dst[127:0] := SELECT4(a[255:0], b[255:0], imm8[3:0])
dst[255:128] := SELECT4(a[255:0], b[255:0], imm8[7:4])
dst[MAX:256] := 0

        如图,imm8用一个字节表示,低四位用b表示,b的值代表dst的低128位从src1和src2的哪一部分取128bit。a的值表示dst的高128位从src1和src2的哪一部分取128bit。

        以下是举例

  • 若imm8=0x20 (0010 0000)

dst的低128位用src1的低128位,dst的高128位用src2的低128位

  • 若imm8=0x21 (0010 0001)

dst的低128位用src1的高128位,dst的高128位用src2的低128位


http://www.kler.cn/a/568690.html

相关文章:

  • 目前主流 AI 大模型体系全解析:架构、特点与应用
  • 【Python · PyTorch】循环神经网络 RNN(基础应用)
  • HashMap与HashTable的区别
  • JDBC 完全指南:掌握 Java 数据库交互的核心技术
  • leetcode 76. 最小覆盖子串
  • 基于专利合作地址匹配的数据构建区域协同矩阵
  • 功能丰富的自动化任务软件zTasker_2.1.0_绿色版_屏蔽强制更新闪退
  • Dify - 自部署的应用构建开源解决方案
  • 数据分享:空气质量数据-济南
  • 2025 GDC开发者先锋大会“人形机器人的开源之路”分论坛 | 圆桌会议:《开放协作:开源生态如何解锁人形机器人与具身智能的未来》(上篇)
  • iOS 18.4 深度更新解析:美食内容革命与跨设备生态重构(2025年4月)
  • Trae智能协作AI编程工具IDE:如何在MacBook Pro下载、安装和配置使用Trae?
  • Raspberry Pi边缘计算网关设计与LoRa通信实现
  • 高频 SQL 50 题(基础版)_626. 换座位
  • 嵌入式学习(29)-ASM330LHH驱动程序
  • 使用python解决硬币找零问题
  • MySQL远程连接Docker中的MySQL(2003,10061)等问题
  • MYISAM存储引擎介绍,特性(和innodb对比),优势,物理文件,表存储格式(静态表,动态表,null记录,压缩表)
  • 动态规划刷题
  • 计算机网络---SYN Blood(洪泛攻击)