0
剛開始使用內在函數,並觸及某些暴露了我的無知的內容。下面是我所看到的人造版本(VS2015):Intel Intrinsics組件命令誤解
__m128i test;
//test.m128i_u16[0] = 127;
//test.m128i_u16[1] = 128;
//test.m128i_u16[2] = 129;
//test.m128i_u16[3] = 130;
//test.m128i_u16[4] = 131;
//test.m128i_u16[5] = 132;
//test.m128i_u16[6] = 133;
//test.m128i_u16[7] = 134;
test.m128i_u16[0] = 50;
test.m128i_u16[1] = 70;
test.m128i_u16[2] = 90;
test.m128i_u16[3] = 110;
test.m128i_u16[4] = 50;
test.m128i_u16[5] = 70;
test.m128i_u16[6] = 90;
test.m128i_u16[7] = 110;
__m128i result = _mm_packus_epi16 (test, test);
這樣最後的命令「轉換從封裝的16位整數和b。使用無符號飽和到包裝的8位整數,並將結果保存在dst「。 如果我運行如圖所示,我得到了我期望:
- m128i_i8 char[16]
[0] 50 char
[1] 70 char
[2] 90 chara
[3] 110 char
[4] 50 char
[5] 70 char
[6] 90 char
[7] 110 char
[8] 50 char
[9] 70 char
[10] 90 char
[11] 110 char
[12] 50 char
[13] 70 char
[14] 90 char
[15] 110 char
,但如果我換上面的輸入(使用評價值設定),然後我得到了看起來是整數飽和的結果: -
m128i_i8 char[16]
[0] 127 char
[1] -128 char
[2] -127 char
[3] -126 char
[4] -125 char
[5] -124 char
[6] -123 char
[7] -122 char
[8] 127 char
[9] -128 char
[10] -127 char
[11] -126 char
[12] -125 char
[13] -124 char
[14] -123 char
[15] -122 char
我在這裏錯過了什麼?解釋,錯誤的命令?
如果你要製作一個表格,其中相應的輸入和輸出排列(水平或垂直),你的問題將會變得更短,更容易閱讀。 –