1 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32i -x c -E -dM %s \
2 // RUN: -o - | FileCheck %s
3 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64i -x c -E -dM %s \
4 // RUN: -o - | FileCheck %s
6 // CHECK-NOT: __riscv_div
7 // CHECK-NOT: __riscv_mul
8 // CHECK-NOT: __riscv_muldiv
9 // CHECK-NOT: __riscv_compressed
10 // CHECK-NOT: __riscv_flen
11 // CHECK-NOT: __riscv_fdiv
12 // CHECK-NOT: __riscv_fsqrt
13 // CHECK-NOT: __riscv_atomic
15 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32im -x c -E -dM %s \
16 // RUN: -o - | FileCheck --check-prefix=CHECK-M-EXT %s
17 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64im -x c -E -dM %s \
18 // RUN: -o - | FileCheck --check-prefix=CHECK-M-EXT %s
19 // CHECK-M-EXT: __riscv_div 1
20 // CHECK-M-EXT: __riscv_mul 1
21 // CHECK-M-EXT: __riscv_muldiv 1
23 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ia -x c -E -dM %s \
24 // RUN: -o - | FileCheck --check-prefix=CHECK-A-EXT %s
25 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ia -x c -E -dM %s \
26 // RUN: -o - | FileCheck --check-prefix=CHECK-A-EXT %s
27 // CHECK-A-EXT: __riscv_atomic 1
29 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32if -x c -E -dM %s \
30 // RUN: -o - | FileCheck --check-prefix=CHECK-F-EXT %s
31 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64if -x c -E -dM %s \
32 // RUN: -o - | FileCheck --check-prefix=CHECK-F-EXT %s
33 // CHECK-F-EXT: __riscv_fdiv 1
34 // CHECK-F-EXT: __riscv_flen 32
35 // CHECK-F-EXT: __riscv_fsqrt 1
37 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ifd -x c -E -dM %s \
38 // RUN: -o - | FileCheck --check-prefix=CHECK-D-EXT %s
39 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ifd -x c -E -dM %s \
40 // RUN: -o - | FileCheck --check-prefix=CHECK-D-EXT %s
41 // CHECK-D-EXT: __riscv_fdiv 1
42 // CHECK-D-EXT: __riscv_flen 64
43 // CHECK-D-EXT: __riscv_fsqrt 1
45 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ic -x c -E -dM %s \
46 // RUN: -o - | FileCheck --check-prefix=CHECK-C-EXT %s
47 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ic -x c -E -dM %s \
48 // RUN: -o - | FileCheck --check-prefix=CHECK-C-EXT %s
49 // CHECK-C-EXT: __riscv_compressed 1
51 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ifd -mabi=ilp32 -x c -E -dM %s \
52 // RUN: -o - | FileCheck --check-prefix=CHECK-SOFT %s
53 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ifd -mabi=lp64 -x c -E -dM %s \
54 // RUN: -o - | FileCheck --check-prefix=CHECK-SOFT %s
55 // CHECK-SOFT: __riscv_float_abi_soft 1
56 // CHECK-SOFT-NOT: __riscv_float_abi_single
57 // CHECK-SOFT-NOT: __riscv_float_abi_double
59 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ifd -mabi=ilp32f -x c -E -dM %s \
60 // RUN: -o - | FileCheck --check-prefix=CHECK-SINGLE %s
61 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ifd -mabi=lp64f -x c -E -dM %s \
62 // RUN: -o - | FileCheck --check-prefix=CHECK-SINGLE %s
63 // CHECK-SINGLE: __riscv_float_abi_single 1
64 // CHECK-SINGLE-NOT: __riscv_float_abi_soft
65 // CHECK-SINGLE-NOT: __riscv_float_abi_double
67 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ifd -x c -E -dM %s \
68 // RUN: -o - | FileCheck --check-prefix=CHECK-DOUBLE %s
69 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ifd -x c -E -dM %s \
70 // RUN: -o - | FileCheck --check-prefix=CHECK-DOUBLE %s
71 // CHECK-DOUBLE: __riscv_float_abi_double 1
72 // CHECK-DOUBLE-NOT: __riscv_float_abi_soft
73 // CHECK-DOUBLE-NOT: __riscv_float_abi_single