我有这段代码可以找到低/高范围内有多少关键像素。低高矩阵是从输入大矩阵生成的。我必须输出匹配像素数大于 150(共 256 个)的低/高坐标。
int8_t high[8192][8192];
int8_t low[8192][8192];
int8_t key[16][16]
for (int i = 0; i <= 8192 - 16; i++)
for (int j = 0; j <= 8192 - 16; j++)
{
char *kLoc = key[ii];
char *lLoc = low[i + ii] + j;
char *hLoc = high[i + ii] + j;
__m128i high, low, num;
low = _mm_loadu_si128((__m128i*)lLoc);
high = _mm_loadu_si128((__m128i*)hLoc);
num = _mm_loadu_si128((__m128i*)kLoc);
// Snip
}
这可以做得更好吗?
我知道有 8 个 128 位 XMM 寄存器和 MMX 寄存器,而我只使用 3 个可用的 XMM 寄存器。我可以优化代码以利用所有寄存器吗?