cpu_dispatch、cpu_specific

ターゲット・プロセッサーのリストでのみ実行する関数のバージョンを作成します (cpu_dispatch)。関数のプロセッサー固有バージョンを宣言できるようにします (cpu_specific)。

構文

Windows*:

__declspec(cpu_dispatch(cpuid, cpuid, ...))

__declspec(cpu_specific(cpuid))

Linux*:

__attribute__((cpu_dispatch(cpuid, cpuid, ...)))

__attribute__((cpu_specific(cpuid)))

引数

cpuid

設定可能な値は以下のとおりです。

atom: インテル® ストリーミング SIMD 拡張命令 3 補足命令 (インテル® SSSE3) 対応 Intel Atom® プロセッサー

atom_sse4_2: インテル® ストリーミング SIMD 拡張命令 4.2 (インテル® SSE4.2) 対応 Intel Atom® プロセッサー

atom_sse4_2_movbe: インテル® SSE4.2 および MOVBE 命令対応 Intel Atom® プロセッサー

broadwell: これは、core_5th_gen_avx と同じです。

core_2nd_gen_avx: インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) 対応第 2 世代インテル® Core™ プロセッサー・ファミリー

core_3rd_gen_avx: RDRND 命令を含むインテル® AVX 対応第 3 世代インテル® Core™ プロセッサー・ファミリー

core_4th_gen_avx: RDRND 命令を含むインテル® AVX2 対応第 4 世代インテル® Core™ プロセッサー・ファミリー

core_4th_gen_avx_tsx: RDRND 命令を含むインテル® AVX2、およびインテル® トランザクショナル・シンクロナイゼーション・エクステンション (インテル® TSX) 対応第 4 世代インテル® Core™ プロセッサー・ファミリー

core_5th_gen_avx: RDSEED および ADX (Multi-Precision Add-Carry Instruction Extensions) 命令を含むインテル® AVX2 対応第 5 世代インテル® Core™ プロセッサー・ファミリー

core_5th_gen_avx_tsx: RDSEED および ADX 命令を含むインテル® AVX2、およびインテル® TSX 対応第 5 世代インテル® Core™ プロセッサー・ファミリー

core_aes_pclmulqdq: AES (Advanced Encryption Standard) 命令およびキャリーなし乗算命令対応インテル® Core™ プロセッサー

core_i7_sse4_2: インテル® SSE4.2 対応インテル® Core™ i7 プロセッサー

generic: インテル製のその他の IA-32 (C++ のみ) またはインテル® 64 プロセッサーまたは互換プロセッサー

haswell: これは、core_4th_gen_avx と同じです。

pentium: インテル® Pentium® プロセッサー

pentium_4: インテル® Pentium® 4 プロセッサー

pentium_4_sse3: インテル® SSE3 対応インテル® Pentium® 4 プロセッサー、インテル® Core™ Duo プロセッサー、インテル® Core™ Solo プロセッサー

pentium_ii: インテル® Pentium® II プロセッサー

pentium_iii: インテル® Pentium® III プロセッサー

pentium_iii_no_xmm_regs: インテル® Pentium® III プロセッサー (XMM レジスターなし)

pentium_m: インテル® Pentium® M プロセッサー

pentium_mmx: インテル® MMX® テクノロジー対応インテル® Pentium® プロセッサー

pentium_pro: インテル® Pentium® Pro プロセッサー

説明

cpu_dispatch キーワードを使用して、ターゲット・プロセッサーのリストと空の関数本体/関数スタブを提供できます。

cpu_specific キーワードを使用して、各関数のプロセッサー固有バージョンを宣言できます。

これらの機能は、IA-32 (C++ のみ) またはインテル® 64 アーキテクチャー・ベースのインテル® プロセッサーでのみ利用できます。インテル以外のプロセッサーでは利用できません。手動プロセッサー・ディスパッチ機能を使用してビルドしたアプリケーションは、互換プロセッサーよりもインテル® プロセッサーでより高度に最適化されることがあります。