gpt4 book ai didi

intel - 内在向量元素类型(如 epi64x 或 pi32)的名称和含义是什么?

转载 作者:行者123 更新时间:2023-12-02 01:45:53 25 4
gpt4 key购买 nike

intel intrinsic functions将向量的子类型内置到它们的名称中。例如,_mm_set1_psps ,这是一个 packed single-precision又名。一个float .虽然他们中的大多数意思很清楚,但他们的“全名”就像packed single-precision从功能描述中并不总是很清楚。我创建了下表。不幸的是,一些条目丢失了。它们的值(value)是什么?表格下方的其他问题。

<表类="s-表"><头>缩写全名C/++ 等效<正文>ps压缩单精度 float 酸碱度压缩半精度无**pd压缩 double 双pch压缩半精度复数无**圆周率 ???int8_tpi16 ???int16_t圆周率 ???int32_tepi8 ???int8_tepi16 ???int16_tepi32 ???int32_tepi64 ???int64_tepi64x ???int64_t

其他问题:

  1. 我错过了什么吗?
  2. epiX 之间有什么区别?和 piX
  3. 为什么没有 pi64存在吗?
  4. epi64 之间有什么区别?和 epi64x

** 我找到了 this ,但似乎没有标准的方法来表示 C/++ 中的半精度(复数)值。如果这有任何变化,请纠正我。

最佳答案

  1. 缺少的版本至少是 si128 和 si64,用于位运算和 [e]pu{8,16,32,64} 用于无符号运算。

  2. epi 和 pi 在 e 上的不同可能意味着 extended; epi 寄存器目标是 128 位 xmm 寄存器,而 pi 目标是 64 位 mmx 寄存器。

  3. pi64 不存在,因为原始的 mmx 指令集仅限于 32 位元素; si64 仍然可用。

  4. 使用 epi64x 而不是 epi64 的主要论点与 C 中缺少函数重载有关。需要为 __m128i _mm_set1_epi64(__m64) 提供设置/转换方法,这从 MMX 移动到 XMM 并为 __m128i _mm_set1_epi64x(int64_t) 使用整数。此外,在其余情况下,64x 后缀似乎是为需要 64 位架构的模式保留的,如 movq 中的寄存器和 的低半部分之间__m128i,它可以通过多条指令进行模拟,对于像 __int64 _mm_cvtsd_si64x (__m128d a) 这样的东西,它可以将 double 转换为 64 位寄存器目标(不直接转换为内存)。

我推测,'si64' 和 'si128' 表示宽度为 64/128_ 的标量 整数,注意存在 _mm_add_si64(这不是原始的SSE intrinsic,即 SSE2 intrinsic 扩展原始 MMX 指令集并使用 MMX 寄存器)。是si64,不是pi64,因为只涉及一个与整个寄存器大小相同的元素。

最后,piN 表示以 MMX (__m64) 为目标的元素大小为 N 的压缩整数,epiN 表示以 XMM (__m128i) 为目标的元素大小为 N 的压缩整数。

关于intel - 内在向量元素类型(如 epi64x 或 pi32)的名称和含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70911872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com