diff options
| author | Shiva Chen <shiva0217@gmail.com> | 2018-04-05 12:54:00 +0000 |
|---|---|---|
| committer | Shiva Chen <shiva0217@gmail.com> | 2018-04-05 12:54:00 +0000 |
| commit | 4891dbf55736355c1b807ae2ab132e4c146269eb (patch) | |
| tree | 77b7f2c9742e8d705fc48cf4cd33ddb581e76283 /clang/test | |
| parent | 94d9c391b6f20d5e1abd1832f0c2b1fff4426254 (diff) | |
| download | bcm5719-llvm-4891dbf55736355c1b807ae2ab132e4c146269eb.tar.gz bcm5719-llvm-4891dbf55736355c1b807ae2ab132e4c146269eb.zip | |
[PATCH] [RISCV] Extend getTargetDefines for RISCVTargetInfo
Summary:
This patch extend getTargetDefines and implement handleTargetFeatures
and hasFeature. and define corresponding marco for those features.
Reviewers: asb, apazos, eli.friedman
Differential Revision: https://reviews.llvm.org/D44727
Patch by Kito Cheng.
llvm-svn: 329278
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/Modules/Inputs/module.map | 5 | ||||
| -rw-r--r-- | clang/test/Modules/target-features.m | 40 | ||||
| -rw-r--r-- | clang/test/Preprocessor/riscv-target-features.c | 49 |
3 files changed, 94 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/module.map b/clang/test/Modules/Inputs/module.map index 93fe4688730..3f128c0bb0e 100644 --- a/clang/test/Modules/Inputs/module.map +++ b/clang/test/Modules/Inputs/module.map @@ -380,6 +380,11 @@ module TargetFeatures { module x86_32 { requires x86_32 } module x86_64 { requires x86_64 } } + module riscv { + requires riscv + module riscv32 { requires riscv32 } + module riscv64 { requires riscv64 } + } } module DebugSubmodules { diff --git a/clang/test/Modules/target-features.m b/clang/test/Modules/target-features.m index b4524835f53..b2597960cbd 100644 --- a/clang/test/Modules/target-features.m +++ b/clang/test/Modules/target-features.m @@ -1,6 +1,7 @@ // REQUIRES: x86-registered-target // REQUIRES: arm-registered-target // REQUIRES: aarch64-registered-target +// REQUIRES: riscv-registered-target // RUN: rm -rf %t @@ -17,6 +18,10 @@ // RUN: FileCheck %s -check-prefix=X86_32 < %t.x86_32 // RUN: not %clang_cc1 -triple x86_64-unknown-unknown -fmodules -fmodules-cache-path=%t -fimplicit-module-maps -I %S/Inputs -fsyntax-only %s 2> %t.x86_64 // RUN: FileCheck %s -check-prefix=X86_64 < %t.x86_64 +// RUN: not %clang_cc1 -triple riscv32-unknown-unknown -fmodules -fmodules-cache-path=%t -fimplicit-module-maps -I %S/Inputs -fsyntax-only %s 2> %t.riscv32 +// RUN: FileCheck %s -check-prefix=RISCV32 < %t.riscv32 +// RUN: not %clang_cc1 -triple riscv64-unknown-unknown -fmodules -fmodules-cache-path=%t -fimplicit-module-maps -I %S/Inputs -fsyntax-only %s 2> %t.riscv64 +// RUN: FileCheck %s -check-prefix=RISCV64 < %t.riscv64 #ifndef SANITY_CHECK @import TargetFeatures; @@ -24,16 +29,22 @@ // AARCH64-NOT: module 'TargetFeatures' requires // X86_32-NOT: module 'TargetFeatures' requires // X86_64-NOT: module 'TargetFeatures' requires +// RISCV32-NOT: module 'TargetFeatures' requires +// RISCV64-NOT: module 'TargetFeatures' requires @import TargetFeatures.arm; // AARCH32-NOT: module 'TargetFeatures.arm' requires // AARCH64-NOT: module 'TargetFeatures.arm' requires // X86_32: module 'TargetFeatures.arm' requires feature 'arm' // X86_64: module 'TargetFeatures.arm' requires feature 'arm' +// RISCV32: module 'TargetFeatures.arm' requires +// RISCV64: module 'TargetFeatures.arm' requires @import TargetFeatures.arm.aarch32; // AARCH32-NOT: module 'TargetFeatures.arm.aarch32' requires // AARCH64: module 'TargetFeatures.arm.aarch32' requires feature 'aarch32' // X86_32: module 'TargetFeatures.arm.aarch32' requires feature // X86_64: module 'TargetFeatures.arm.aarch32' requires feature +// RISCV32: module 'TargetFeatures.arm.aarch32' requires feature +// RISCV64: module 'TargetFeatures.arm.aarch32' requires feature #endif @import TargetFeatures.arm.aarch64; @@ -41,6 +52,8 @@ // AARCH64-NOT: module 'TargetFeatures.arm.aarch64' requires // X86_32: module 'TargetFeatures.arm.aarch64' requires feature // X86_64: module 'TargetFeatures.arm.aarch64' requires feature +// RISCV32: module 'TargetFeatures.arm.aarch64' requires feature +// RISCV64: module 'TargetFeatures.arm.aarch64' requires feature #ifndef SANITY_CHECK @import TargetFeatures.x86; @@ -48,14 +61,41 @@ // AARCH64: module 'TargetFeatures.x86' requires feature 'x86' // X86_32-NOT: module 'TargetFeatures.x86' requires // X86_64-NOT: module 'TargetFeatures.x86' requires +// RISCV32: module 'TargetFeatures.x86' requires feature 'x86' +// RISCV64: module 'TargetFeatures.x86' requires feature 'x86' @import TargetFeatures.x86.x86_32; // AARCH32: module 'TargetFeatures.x86.x86_32' requires feature // AARCH64: module 'TargetFeatures.x86.x86_32' requires feature // X86_32-NOT: module 'TargetFeatures.x86.x86_32' requires // X86_64: module 'TargetFeatures.x86.x86_32' requires feature 'x86_32' +// RISCV32: module 'TargetFeatures.x86.x86_32' requires feature +// RISCV64: module 'TargetFeatures.x86.x86_32' requires feature @import TargetFeatures.x86.x86_64; // AARCH32: module 'TargetFeatures.x86.x86_64' requires feature // AARCH64: module 'TargetFeatures.x86.x86_64' requires feature // X86_32: module 'TargetFeatures.x86.x86_64' requires feature 'x86_64' // X86_64-NOT: module 'TargetFeatures.x86.x86_64' requires +// RISCV32: module 'TargetFeatures.x86.x86_64' requires feature +// RISCV64: module 'TargetFeatures.x86.x86_64' requires feature +@import TargetFeatures.riscv; +// AARCH32: module 'TargetFeatures.riscv' requires feature +// AARCH64: module 'TargetFeatures.riscv' requires feature +// X86_32: module 'TargetFeatures.riscv' requires feature +// X86_64: module 'TargetFeatures.riscv' requires feature +// RISCV32-NOT: module 'TargetFeatures.riscv' requires feature +// RISCV64-NOT: module 'TargetFeatures.riscv' requires feature +@import TargetFeatures.riscv.riscv32; +// AARCH32: module 'TargetFeatures.riscv.riscv32' requires feature +// AARCH64: module 'TargetFeatures.riscv.riscv32' requires feature +// X86_32: module 'TargetFeatures.riscv.riscv32' requires feature +// X86_64: module 'TargetFeatures.riscv.riscv32' requires feature +// RISCV32-NOT: module 'TargetFeatures.riscv.riscv32' requires feature +// RISCV64: module 'TargetFeatures.riscv.riscv32' requires feature 'riscv32' +@import TargetFeatures.riscv.riscv64; +// AARCH32: module 'TargetFeatures.riscv.riscv64' requires feature +// AARCH64: module 'TargetFeatures.riscv.riscv64' requires feature +// X86_32: module 'TargetFeatures.riscv.riscv64' requires feature +// X86_64: module 'TargetFeatures.riscv.riscv64' requires feature +// RISCV32: module 'TargetFeatures.riscv.riscv64' requires feature 'riscv64' +// RISCV64-NOT: module 'TargetFeatures.riscv.riscv64' requires feature #endif diff --git a/clang/test/Preprocessor/riscv-target-features.c b/clang/test/Preprocessor/riscv-target-features.c new file mode 100644 index 00000000000..2c63e0fa29d --- /dev/null +++ b/clang/test/Preprocessor/riscv-target-features.c @@ -0,0 +1,49 @@ +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32i -x c -E -dM %s \ +// RUN: -o - | FileCheck %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64i -x c -E -dM %s \ +// RUN: -o - | FileCheck %s + +// CHECK-NOT: __riscv_div +// CHECK-NOT: __riscv_mul +// CHECK-NOT: __riscv_muldiv +// CHECK-NOT: __riscv_compressed +// CHECK-NOT: __riscv_flen +// CHECK-NOT: __riscv_fdiv +// CHECK-NOT: __riscv_fsqrt +// CHECK-NOT: __riscv_atomic + +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32im -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-M-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64im -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-M-EXT %s +// CHECK-M-EXT: __riscv_div 1 +// CHECK-M-EXT: __riscv_mul 1 +// CHECK-M-EXT: __riscv_muldiv 1 + +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ia -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-A-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ia -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-A-EXT %s +// CHECK-A-EXT: __riscv_atomic 1 + +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32if -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-F-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64if -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-F-EXT %s +// CHECK-F-EXT: __riscv_fdiv 1 +// CHECK-F-EXT: __riscv_flen 32 +// CHECK-F-EXT: __riscv_fsqrt 1 + +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ifd -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-D-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ifd -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-D-EXT %s +// CHECK-D-EXT: __riscv_fdiv 1 +// CHECK-D-EXT: __riscv_flen 64 +// CHECK-D-EXT: __riscv_fsqrt 1 + +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ic -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-C-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ic -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-C-EXT %s +// CHECK-C-EXT: __riscv_compressed 1 |

