2
我有兩個浮點操作數的比較結果比較如下;我需要的是基於比較的結果做需要執行以下操作:即:NEON包裝矢量比較結果到位圖中
neon_gt_res = vcgtq_f32(temp1, temp2);
if(neon_gt_res[0]) array[0] |= (unsigned char)0x01;
if(neon_gt_res[1]) array[0] |= (unsigned char)0x02;
if(neon_gt_res[2]) array[0] |= (unsigned char)0x04;
if(neon_gt_res[3]) array[0] |= (unsigned char)0x08;
但寫這樣再次相當於多重比較。我如何在霓虹C內在函數中最優化地編寫它。
在x86上,這將是array[0] |= _mm_movemask_ps(cmp_gt_res);
什麼類型是'陣列[]'?我假設它是一個字節數組,但你的C類意味着什麼。你會想要一個'1 2 4 8'的向量,你可以用比較結果進行掩碼。但是,我認爲,您需要進行洗牌以將結果打包到NEON寄存器的低4字節中。我不太瞭解NEON,但是如果你能做到這一點,那麼你會想要做一個32位的陣列負載,做一個打包的OR,然後存儲。 –
array []是unsigned char類型。比較結果是int32x4_t類型,因此我不能使用該掩碼。有沒有其他方法可以幫助我使用這個 – Lakshmi
但是NEON是否有任何可以用來從比較結果的每個元素打包1個字節的字節洗牌指令? –