適用範囲:DS-5, Cortex プロセッサ
CPUではなく特定のアーキテクチャを指定してコンパイルする場合、ARM Compilerは追加のアーキテクチャ拡張を有効にしません。例えば --cpu=7-a オプションを指定して、ARM v7-A プロセッサをターゲットとした場合、ARM Compiler は --fpu が指定されていたとしても自動ベクタライズ化は実施せず、NEON 組み込み関数はサポートされません。
これはARMv7-A においてAdvanced SIMD 拡張 (NEON) がオプションであることに起因します。Advanced SIMD をサポートするコアに対して機能の有効化/無効化が可能です。
例えばVFPv3 は実装されており、一方NEON は実装されていないCortex-A8 の場合、 --cpu=cortex-a8.no_neon --fpu=vfpv3 オプションが使用可能です。
以下の表はどの機能が個別のARM Compiler の --cpu オプションでサポートされるかを示しています。
ARMv7-A プロセッサ ( --cpu オプション) |
セキュリティ (TrustZone) |
浮動小数点 (VFP) |
拡張SIMD (NEON) |
マルチプロセシング | 仮想化 | 除算命令 (SDIV/UDIV) |
Cortex-A8.no_neon | Yes | No | No | No | No | No |
Cortex-A9. no_neon.no_vfp |
Yes | No | No | Yes | No | No |
Cortex-A5 | Yes | No | No | Yes | No | No |
Cortex-A5.vfp | Yes | Yes (VFPv4) | No | Yes | No | No |
Cortex-A5.neon | Yes | Yes (VFPv4) | Yes | Yes | No | No |
Cortex-A8 | Yes | Yes (VFPv3) | Yes | No | No | No |
Cortex-A9 | Yes | Yes (VFPv3) | Yes | Yes | No | No |
Cortex-A15 | Yes | Yes (VFPv4) | Yes | Yes | Yes | Yes |
Cortex-A17 | Yes | Yes (VFPv4) | Yes | Yes | Yes | Yes |
特定のプロセッサではなく、例えば拡張SIMDのように特定のアーキテクチャ用機能のためのコードのビルドを行わなければならない場合があります。
例えばARMv7-A に属するプロセッサ群で共通的に利用可能なオブジェクトや実行可能形式を生成するような環境を作る場合が該当します。
以下の表は異なったアーキテクチャ拡張を有効にするARM Compiler の--cpuオプションの最小構成を示します。
ARMv7-A アーキテクチャ拡張 | 共通の最小構成となるCPU( --cpu オプション) |
セキュリティ | Cortex-A8.no_neon |
セキュリティおよびNEON | Cortex-A8 |
マルチプロセシング | Cortex-A9.no_neon.no_vfpまたはCortex-A5 |
VFPv3 を伴うNEON | Cortex-A8 |
VFPv4 を伴うNEON | Cortex-A5.neon |
仮想化 | Cortex-A15 |
除算命令 | Cortex-A15 |