2010-12-08 13 views
6

私は、アーキテクチャが異なるさまざまなARMプロセッサ(ARMv5、ARMv6がほとんど)で動作する、C言語で書かれたソフトウェアを使用しています。現在、いくつかの異なるバージョンのRVDSでコードをコンパイルしていますが、カスタムインストルメンテーションを追加するために、LLVMを使用してコードをコンパイルする方法があります。どのARMアーキテクチャがLLVMをサポートしていますか?

LLVMにはARMターゲットとThumbターゲットがありますが、具体的にどのアーキテクチャがサポートしているのですか? LLVMはARMv5でコードを生成しますか?私は何の制限を認識すべきですか?

答えて

7

彼らsource codeリスト次archsを:

// ARM architectures. 
def ArchV4T  : SubtargetFeature<"v4t", "ARMArchVersion", "V4T", "ARM v4T">; 
def ArchV5T  : SubtargetFeature<"v5t", "ARMArchVersion", "V5T", "ARM v5T">; 
def ArchV5TE : SubtargetFeature<"v5te", "ARMArchVersion", "V5TE", "ARM v5TE, v5TEj, v5TExp">; 
def ArchV6  : SubtargetFeature<"v6", "ARMArchVersion", "V6", "ARM v6">; 
def ArchV6M  : SubtargetFeature<"v6m", "ARMArchVersion", "V6M", "ARM v6m", [FeatureNoARM, FeatureDB]>; 
def ArchV6T2 : SubtargetFeature<"v6t2", "ARMArchVersion", "V6T2", "ARM v6t2", [FeatureThumb2]>; 
def ArchV7A  : SubtargetFeature<"v7a", "ARMArchVersion", "V7A", "ARM v7A", [FeatureThumb2, FeatureNEON, FeatureDB]>; 
def ArchV7M  : SubtargetFeature<"v7m", "ARMArchVersion", "V7M", "ARM v7M", [FeatureThumb2, FeatureNoARM, FeatureDB, FeatureHWDiv]>; 
+0

それは、このような権威のリストを持って良いことです。しかし、それぞれのアーキテクチャーがどのレベルの安定性を持っているかは分かりません。 –

+2

これらはLLVMバックエンドが知っているアーチですが、v5te、v6、v7aで最もよくテストされています。 v5teはLLVM Buildbotの設定です。http://google1.osuosl.org:8011/、v6とv7aはともにAppleの「smooshlab」Buildbotでarm-apple-darwin(iOS)としてテストされています。 – ohmantics

+0

トランクにリンクしますが、このリストはどのバージョンから取得されましたか? – RedX

1

私はARMv4とARMv6でllvm生成コードを実行しています。私はいくつかのARMv5プラットフォームを持っていますが、私がそこでそれを試しても覚えていません。一般的な-march = armの出力は、共通分母(ARMv4)コードを与えると仮定します。つまり、ARMv5で実行されます。これはすべて埋め込まれていましたが、オペレーティングシステムの種類の作業に心配はありませんでした。私はllvmを使ってarm linuxバイナリなどを作成していません。

関連する問題