ターゲット・プロセッサーのリストでのみ実行する関数のバージョンを作成します (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 アーキテクチャー・ベースのインテル® プロセッサーでのみ利用できます。インテル以外のプロセッサーでは利用できません。手動プロセッサー・ディスパッチ機能を使用してビルドしたアプリケーションは、互換プロセッサーよりもインテル® プロセッサーでより高度に最適化されることがあります。