mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-25 14:28:54 -04:00

Currently, the interaction between the triple, the CPU, and the supported features is a mess: the driver edits the triple to indicate the supported architecture version, and the LLVM backend uses this to figure out what instructions are legal. This makes it difficult to understand what's happening, and makes it impossible to LTO together two modules with different computed architectures. Instead of relying on triple rewriting to get the correct target features, we should add the right target features explicitly. Differential Revision: https://reviews.llvm.org/D45240 llvm-svn: 330169
34 lines
1.6 KiB
C
34 lines
1.6 KiB
C
// REQUIRES: arm-registered-target
|
|
|
|
// RUN: %clang_cc1 -triple thumbv7-linux-gnueabihf -emit-llvm -o - %s | FileCheck --check-prefix THUMB %s
|
|
// RUN: %clang_cc1 -triple thumbv7eb-linux-gnueabihf -emit-llvm -o - %s | FileCheck --check-prefix THUMB %s
|
|
// RUN: %clang -target armv7-linux-gnueabihf -mthumb -S -emit-llvm -o - %s | FileCheck --check-prefix THUMB-CLANG %s
|
|
// RUN: %clang_cc1 -triple armv7-linux-gnueabihf -emit-llvm -o - %s | FileCheck --check-prefix ARM %s
|
|
// RUN: %clang_cc1 -triple armv7eb-linux-gnueabihf -emit-llvm -o - %s | FileCheck --check-prefix ARM %s
|
|
|
|
void t1() {}
|
|
|
|
__attribute__((target("no-thumb-mode")))
|
|
void t2() {}
|
|
|
|
__attribute__((target("thumb-mode")))
|
|
void t3() {}
|
|
|
|
// THUMB: void @t1() [[ThumbAttr:#[0-7]]]
|
|
// THUMB: void @t2() [[NoThumbAttr:#[0-7]]]
|
|
// THUMB: void @t3() [[ThumbAttr:#[0-7]]]
|
|
// THUMB: attributes [[ThumbAttr]] = { {{.*}} "target-features"="+armv7-a,+thumb-mode"
|
|
// THUMB: attributes [[NoThumbAttr]] = { {{.*}} "target-features"="+armv7-a,-thumb-mode"
|
|
//
|
|
// THUMB-CLANG: void @t1() [[ThumbAttr:#[0-7]]]
|
|
// THUMB-CLANG: void @t2() [[NoThumbAttr:#[0-7]]]
|
|
// THUMB-CLANG: void @t3() [[ThumbAttr:#[0-7]]]
|
|
// THUMB-CLANG: attributes [[ThumbAttr]] = { {{.*}} "target-features"="{{.*}}+thumb-mode
|
|
// THUMB-CLANG: attributes [[NoThumbAttr]] = { {{.*}} "target-features"="{{.*}}-thumb-mode
|
|
|
|
// ARM: void @t1() [[NoThumbAtr:#[0-7]]]
|
|
// ARM: void @t2() [[NoThumbAttr:#[0-7]]]
|
|
// ARM: void @t3() [[ThumbAttr:#[0-7]]]
|
|
// ARM: attributes [[NoThumbAttr]] = { {{.*}} "target-features"="+armv7-a,-thumb-mode"
|
|
// ARM: attributes [[ThumbAttr]] = { {{.*}} "target-features"="+armv7-a,+thumb-mode"
|