最終更新:2012-02-23 (木) 04:45:12 (4446d)
SSE/関数
関数名の命名規則
引数の__m128のタイプ
- 1文字目
- p - packed
- s - scalar
- 2文字目
float/double
- ss - scalar single percision float (float)
- ps - packed single percision float (float)
- sd - scalar double percision float (double)
- pd - packed double percision float (double)
integer?
- si - scalar integer
- su - scalar unsigned integer
- si# - scalar #bit integer
- su# - scalar unsigned #bit integer
- pi# - packed #bit integer (MMX,64bit)
- pu# - packed unsigned #bit integer (MMX,64bit)
- epi# - packed #bit integer (XMM,128bit)
- epu# - packed unsigned #bit integer (XMM,128bit)
その他
- b: byte
- w: word
- d: doubleword
- q: quadword
- dq: double quadword
SSE/初代
Floating-Point Intrinsics Using Streaming SIMD Extensions
算術演算
- _mm_add_ss? - a と b の最下位(R0)の単精度浮動小数点値 (SP FP) を加算します
- _mm_add_ps - a と b の 4 つの単精度浮動小数点値を加算します。
- _mm_sub_ss?
- _mm_sub_ps?
- _mm_mul_ss?
- _mm_mul_ps?
- _mm_div_ss?
- _mm_div_ps?
- _mm_sqrt_ss?
- _mm_sqrt_ps
- _mm_rcp_ss?
- _mm_rcp_ps?
- _mm_rsqrt_ss?
- _mm_rsqrt_ps?
- _mm_min_ss?
- _mm_min_ps?
- _mm_max_ss?
- _mm_max_ps?
Logical Operations
Comparison Intrinsics
- _mm_cmpeq_ss?
- _mm_cmpeq_ps?
- _mm_cmplt_ss?
- _mm_cmplt_ps?
- _mm_cmple_ss?
- _mm_cmple_ps?
- _mm_cmpgt_ss?
- _mm_cmpgt_ps?
- _mm_cmpge_ss?
- _mm_cmpge_ps?
- _mm_cmpneq_ss?
- _mm_cmpneq_ps?
- _mm_cmpnlt_ss?
- _mm_cmpnlt_ps?
- _mm_cmpnle_ss?
- _mm_cmpnle_ps?
- _mm_cmpngt_ss?
- _mm_cmpngt_ps?
- _mm_cmpnge_ss?
- _mm_cmpnge_ps?
- _mm_cmpord_ss?
- _mm_cmpord_ps?
- _mm_cmpunord_ss?
- _mm_cmpunord_ps?
- _mm_comieq_ss?
- _mm_comilt_ss?
- _mm_comile_ss?
- _mm_comigt_ss?
- _mm_comige_ss?
- _mm_comineq_ss?
- _mm_ucomieq_ss?
- _mm_ucomilt_ss?
- _mm_ucomile_ss?
- _mm_ucomigt_ss?
- _mm_ucomige_ss?
- _mm_ucomineq_ss?
Conversion Operations
- _mm_cvtss_si32?
- _mm_cvtps_pi32?
- _mm_cvttss_si32?
- _mm_cvttps_pi32?
- _mm_cvtsi32_ss?
- _mm_cvtpi32_ps?
- _mm_cvtpi16_ps?
- _mm_cvtpu16_ps?
- _mm_cvtpi8_ps?
- _mm_cvtpu8_ps?
- _mm_cvtpi32x2_ps?
- _mm_cvtps_pi16?
- _mm_cvtps_pi8?
Miscellaneous Intrinsics Using Streaming SIMD Extensions
- _mm_shuffle_ps?
- _mm_shuffle_pi16?
- _mm_unpackhi_ps?
- _mm_unpacklo_ps?
- _mm_loadh_pi?
- _mm_storeh_pi?
- _mm_movehl_ps?
- _mm_movelh_ps?
- _mm_loadl_pi?
- _mm_storel_pi?
- _mm_movemask_ps?
- _mm_getcsr?
- _mm_setcsr?
Memory and Initialization Using Streaming SIMD Extensions
Load Operations
- _mm_load_ss? - 最下位の値をロードして、上位 3 つの値をクリアする
- _mm_load1_ps?, _mm_load_ps1? - 1つの値を 4 ワードすべてにロードする
- _mm_load_ps - 4 つの値をロードする(アライメントが合っている必要がある)
- _mm_loadu_ps? - 4 つの値をロードする (アライメントが合っている必要はない)
- _mm_loadr_ps? - 4 つの値を逆順でロードする
Set Operations
Store Operations
- _mm_store_ss?
- _mm_store1_ps?, _mm_store_ps1?
- _mm_store_ps?
- _mm_storeu_ps?
- _mm_storer_ps?
- _mm_move_ss?
Integer Intrinsics Using Streaming SIMD Extensions
- _mm_extract_pi16?
- _mm_insert_pi16?
- _mm_max_pi16?
- _mm_max_pu8?
- _mm_min_pi16?
- _mm_min_pu8?
- _mm_movemask_pi8?
- _mm_mulhi_pu16?
- _mm_maskmove_si64?
- _mm_avg_pu8?
- _mm_avg_pu16?
- _mm_sad_pu8?
- _mm_shuffle_pi16?
Cache Support Using Streaming SIMD Extensions
メモ
- _mm_set1_ps
- _mm_set1_epi32?
- _mm_set_epi8?
- _mm_add_ps
- _mm_sub_ps?
- _mm_sqrt_ps
- _mm_shuffle_epi8
- _mm_cvttps_epi32?
- _mm_packs_epi32?
- _mm_packs_epi16?
- _mm_add_epi32?
- _mm_srli_epi32?
- _mm_mullo_epi32?
- _mm_and_si128?
- _mm_add_epi16?
- _mm_loadu_si128?
- _mm_castps_si128?