问题标签 [spu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
83 浏览

cpu-architecture - 解码多长度操作码 (SPU ISA)

我从我实现的汇编程序中生成了十六进制的 32 位指令转储。指令转储的一个子集如下所示:

在此处输入图像描述

指令的操作码长度为 4、7、8、9 和 11。它们始终是指令中的第一位。如果操作码的长度不同,我无法理解如何解码指令?

例如:当我读取一条指令时,我怎么知道我应该为操作码读取多少位?

这是指令格式的图像: 格式

谢谢

0 投票
1 回答
295 浏览

sse - 检查比较结果的多个向量中的每个向量中至少有一个元素为真 - 水平 OR 然后 AND

我正在寻找相同向量的分量之间的 SSE 按位或。(编者注:这可能是一个 XY 问题,请参阅下面的真实比较逻辑。)

我正在从SPU内在函数移植一些 SIMD 逻辑。它有一个指令

根据文档

spu_orx: OR word across d = spu_orx(a) 向量a的四个字元素进行逻辑或。结果在向量 d 的单词元素 0 中返回。d 的所有其他元素 (1,2,3) 都分配为零值。

我如何使用涉及最少指导的 SSE 2 - 4 做到这一点?_mm_or_ps是我在这里得到的。

更新:

以下是基于 SPU 的代码的场景:

因此,它首先对两个“更大”的比较进行 OR,然后对其结果进行 OR。这些结果中的后几对进行与运算以获得最终的比较值。

(A||B||C||D||E||F||G||H) && (I||J||K||L||M||N||O||P) && ...在 A..D 是 4x 32 位元素的情况下有效fcgt(x,y),依此类推。

显然,垂直_mm_or_ps_mm_cmp_ps结果是减少到 1 个向量的好方法,但是然后呢?Shuffle + OR,还是别的什么?

更新 1

关于“但是然后呢?” 我表演

在 SPU 上是这样的:

在不同的输入上多次,然后将它们全部合成一个结果,最后将其转换为整数 0 或 1(假/真测试)