0
我想通過使用Neon intrinsics作爲練習來減去兩個圖像(灰度),我不知道用C intrinsics減去兩個向量的最佳方法是什麼。使用NEON減去兩個圖像
void subtractTwoImagesNeonOnePass(uint8_t *src, uint8_t*dest, uint8_t*result, int srcWidth)
{
for (int i = 0; i<srcWidth; i++)
{
// load 8 pixels
uint8x8x3_t srcPixels = vld3_u8 (src);
uint8x8x3_t dstPixels = vld3_u8 (src);
// subtract them
uint8x8x3_t subPixels = vsub_u8(srcPixels, dstPixels);
// store the result
vst1_u8 (result, subPixels);
// move 8 pixels
src+=8;
dest+=8;
result+=8;
}
}
編譯後使用'objdump'並檢查生成的二進制文件的程序集。如果它看起來夠好,那就夠好了。 – auselen 2013-03-18 17:04:04
@auselen它不編譯,uint8x8x3_t subPixels = vsub_u8(srcPixels,dstPixels); – 2013-03-18 17:12:13
如果這些只是灰度圖像,那麼您不想使用3種組件類型和內在函數 - 使用'uint8x16_t'作爲數據類型,然後使用普通的16字節加載和存儲。 – 2013-03-18 17:19:11