目次 - SDL 3.0 API(機能別) - 組み込み関数の検知

組み込み関数の検知

概要

CPU固有のコンパイラの組み込み関数の有無のプリプロセッサによるチェックをSDLで行う. これはシステムの複雑な要因, ビルドツールのバージョン, その他の外部要因に依存し, 必ずしも簡単ではないためである.

SDLヘッダをインクルードしたアプリケーションは, 特定のCPUアーキテクチャの組み込み関数を安全に使用できるか判断するために, プリプロセッサの定義をチェックできる. これはコンパイラが組み込み命令を使えるかをチェックするだけで, 実行時には, SDL_HasSSE()やSDL_HasNEON()のようなシステムのCPU情報関数でチェックする必要がある. そうしないと, 対応していないCPU命令を使用したときクラッシュする.

SDLは, CPU組み込み関数が対応しているときプリプロセッサの定義を設定するだけなので, アプリケーションは#ifではなく#ifdefでチェックする必要がある.

SDLは適切な命令セット固有のヘッダもインクルードする. 例えば, もしSDLがSDL_SSE2_INTRINSICSが定義されていれば, #include も同様に定義されている.

マクロ

  1. SDL_ALTIVEC_INTRINSICS
  2. SDL_AVX2_INTRINSICS
  3. SDL_AVX512F_INTRINSICS
  4. SDL_AVX_INTRINSICS
  5. SDL_LASX_INTRINSICS
  6. SDL_LSX_INTRINSICS
  7. SDL_MMX_INTRINSICS
  8. SDL_NEON_INTRINSICS
  9. SDL_SSE2_INTRINSICS
  10. SDL_SSE3_INTRINSICS
  11. SDL_SSE4_1_INTRINSICS
  12. SDL_SSE4_2_INTRINSICS
  13. SDL_SSE_INTRINSICS
  14. SDL_TARGETING

SDL Wikiへのリンク

SDL3/CategoryIntrinsics - SDL Wiki