最終更新:2012-02-23 (木) 04:45:12 (4439d)  

SSE/関数
Top / SSE / 関数

関数名の命名規則

引数の__m128のタイプ

  • 1文字目
    • p - packed
    • s - scalar
  • 2文字目
    • s single-percision float (float)
    • d double-percision float (double)
    • i integer

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

  • _mm_and_ps?
  • _mm_andnot_ps?
  • _mm_or_ps?
  • _mm_xor_ps?

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_prefetch?
  • _mm_stream_pi?
  • _mm_stream_ps?
  • _mm_sfence?

メモ

  • _mm_cvtepi16_epi32?
  • _mm_cvtepi32_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?

関連

参考