Какие архитектуры ARM поддерживает LLVM? - PullRequest
6 голосов
/ 08 декабря 2010

Я работаю над программным обеспечением, написанным на C, которое работает на различных процессорах ARM с различными архитектурами (в основном ARMv5, ARMv6). В настоящее время мы компилируем наш код с несколькими различными версиями RVDS, но мы смотрим на компиляцию некоторого кода с LLVM, чтобы добавить некоторые пользовательские инструменты.

Я знаю, что у LLVM есть цели ARM и Thumb, но какие архитектуры он поддерживает, в частности? Будет ли сгенерированный LLVM код работать на ARMv5? О каких ограничениях я должен знать?

Ответы [ 2 ]

7 голосов
/ 08 декабря 2010

Их исходный код перечисляет следующие арки:

// 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]>;
1 голос
/ 08 декабря 2010

Я запустил сгенерированный llvm код на ARMv4 и ARMv6 определенно. У меня есть несколько платформ ARMv5, но не помню, пробовал ли я там. Я бы предположил, что вывод общего ключа -march = arm даст код наименьшего общего знаменателя (ARMv4), что означает, что он будет работать на ARMv5. Все это было встроено, ни одна операционная система не работает, заметьте, я не использовал llvm для создания исполняемых файлов arm linux или чего-то подобного.

...