2010-12-08 2 views
6

다른 아키텍처 (ARMv5, ARMv6 대부분)를 사용하는 다양한 ARM 프로세서에서 실행되는 C로 작성된 소프트웨어에서 작동합니다. 현재 몇 가지 다른 버전의 RVDS로 코드를 컴파일하고 있지만 사용자 정의 계측을 추가하기 위해 LLVM을 사용하여 일부 코드를 컴파일하는 방법을 모색 중입니다.어떤 ARM 아키텍처가 LLVM을 지원합니까?

저는 LLVM이 ARM 및 Thumb 타겟을 가지고 있지만 어떤 아키텍처가 특별히이를 지원합니까? LLVM이 ARMv5에서 코드를 생성합니까? 어떤 제한 사항을 알고 있어야합니까?

답변

7

그들의 source code 목록 다음 아치 :

// 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에서 ARMv4에서 생성 된 llvm 코드와 ARMv6을 확실히 실행했습니다. 일부 ARMv5 플랫폼이 있지만 거기에 시도해보십시오 기억이 안나요. generic -march = arm의 출력은 ARMv5에서 실행된다는 것을 의미하는 최소 공통 분모 (ARMv4) 코드를 제공한다고 가정합니다. 이것은 모두 임베디드, 아니 운영 체제 유형의 작업 마음, 나는 llvm을 사용하여 암 리눅스 바이너리 또는 그와 비슷한 것을 만들지 않았습니다.