1 // RUN: %clang -E -dM %s -o - 2>&1 \
2 // RUN: -target wasm32-unknown-unknown -matomics \
3 // RUN: | FileCheck %s -check-prefix=ATOMICS
4 // RUN: %clang -E -dM %s -o - 2>&1 \
5 // RUN: -target wasm64-unknown-unknown -matomics \
6 // RUN: | FileCheck %s -check-prefix=ATOMICS
8 // ATOMICS: #define __wasm_atomics__ 1{{$}}
10 // RUN: %clang -E -dM %s -o - 2>&1 \
11 // RUN: -target wasm32-unknown-unknown -pthread \
12 // RUN: | FileCheck %s -check-prefix=PTHREAD
13 // RUN: %clang -E -dM %s -o - 2>&1 \
14 // RUN: -target wasm64-unknown-unknown -pthread \
15 // RUN: | FileCheck %s -check-prefix=PTHREAD
17 // PTHREAD: #define __wasm_atomics__ 1{{$}}
19 // RUN: %clang -E -dM %s -o - 2>&1 \
20 // RUN: -target wasm32-unknown-unknown -mbulk-memory \
21 // RUN: | FileCheck %s -check-prefix=BULK-MEMORY
22 // RUN: %clang -E -dM %s -o - 2>&1 \
23 // RUN: -target wasm64-unknown-unknown -mbulk-memory \
24 // RUN: | FileCheck %s -check-prefix=BULK-MEMORY
26 // BULK-MEMORY: #define __wasm_bulk_memory__ 1{{$}}
28 // RUN: %clang -E -dM %s -o - 2>&1 \
29 // RUN: -target wasm32-unknown-unknown -mexception-handling \
30 // RUN: | FileCheck %s -check-prefix=EXCEPTION-HANDLING
31 // RUN: %clang -E -dM %s -o - 2>&1 \
32 // RUN: -target wasm64-unknown-unknown -mexception-handling \
33 // RUN: | FileCheck %s -check-prefix=EXCEPTION-HANDLING
35 // EXCEPTION-HANDLING: #define __wasm_exception_handling__ 1{{$}}
37 // RUN: %clang -E -dM %s -o - 2>&1 \
38 // RUN: -target wasm32-unknown-unknown -mextended-const \
39 // RUN: | FileCheck %s -check-prefix=EXTENDED-CONST
40 // RUN: %clang -E -dM %s -o - 2>&1 \
41 // RUN: -target wasm64-unknown-unknown -mextended-const \
42 // RUN: | FileCheck %s -check-prefix=EXTENDED-CONST
44 // EXTENDED-CONST: #define __wasm_extended_const__ 1{{$}}
46 // RUN: %clang -E -dM %s -o - 2>&1 \
47 // RUN: -target wasm32-unknown-unknown -mfp16 \
48 // RUN: | FileCheck %s -check-prefix=FP16
49 // RUN: %clang -E -dM %s -o - 2>&1 \
50 // RUN: -target wasm64-unknown-unknown -mfp16 \
51 // RUN: | FileCheck %s -check-prefix=FP16
53 // FP16: #define __wasm_fp16__ 1{{$}}
55 // RUN: %clang -E -dM %s -o - 2>&1 \
56 // RUN: -target wasm32-unknown-unknown -mmultimemory \
57 // RUN: | FileCheck %s -check-prefix=MULTIMEMORY
58 // RUN: %clang -E -dM %s -o - 2>&1 \
59 // RUN: -target wasm64-unknown-unknown -mmultimemory \
60 // RUN: | FileCheck %s -check-prefix=MULTIMEMORY
62 // MULTIMEMORY: #define __wasm_multimemory__ 1{{$}}
64 // RUN: %clang -E -dM %s -o - 2>&1 \
65 // RUN: -target wasm32-unknown-unknown -mmultivalue \
66 // RUN: | FileCheck %s -check-prefix=MULTIVALUE
67 // RUN: %clang -E -dM %s -o - 2>&1 \
68 // RUN: -target wasm64-unknown-unknown -mmultivalue \
69 // RUN: | FileCheck %s -check-prefix=MULTIVALUE
71 // MULTIVALUE: #define __wasm_multivalue__ 1{{$}}
73 // RUN: %clang -E -dM %s -o - 2>&1 \
74 // RUN: -target wasm32-unknown-unknown -mmutable-globals \
75 // RUN: | FileCheck %s -check-prefix=MUTABLE-GLOBALS
76 // RUN: %clang -E -dM %s -o - 2>&1 \
77 // RUN: -target wasm64-unknown-unknown -mmutable-globals \
78 // RUN: | FileCheck %s -check-prefix=MUTABLE-GLOBALS
80 // MUTABLE-GLOBALS: #define __wasm_mutable_globals__ 1{{$}}
82 // RUN: %clang -E -dM %s -o - 2>&1 \
83 // RUN: -target wasm32-unknown-unknown -mnontrapping-fptoint \
84 // RUN: | FileCheck %s -check-prefix=NONTRAPPING-FPTOINT
85 // RUN: %clang -E -dM %s -o - 2>&1 \
86 // RUN: -target wasm64-unknown-unknown -mnontrapping-fptoint \
87 // RUN: | FileCheck %s -check-prefix=NONTRAPPING-FPTOINT
89 // NONTRAPPING-FPTOINT: #define __wasm_nontrapping_fptoint__ 1{{$}}
91 // RUN: %clang -E -dM %s -o - 2>&1 \
92 // RUN: -target wasm32-unknown-unknown -mreference-types \
93 // RUN: | FileCheck %s -check-prefix=REFERENCE-TYPES
94 // RUN: %clang -E -dM %s -o - 2>&1 \
95 // RUN: -target wasm64-unknown-unknown -mreference-types \
96 // RUN: | FileCheck %s -check-prefix=REFERENCE-TYPES
98 // REFERENCE-TYPES: #define __wasm_reference_types__ 1{{$}}
100 // RUN: %clang -E -dM %s -o - 2>&1 \
101 // RUN: -target wasm32-unknown-unknown -mrelaxed-simd \
102 // RUN: | FileCheck %s -check-prefix=RELAXED-SIMD
103 // RUN: %clang -E -dM %s -o - 2>&1 \
104 // RUN: -target wasm64-unknown-unknown -mrelaxed-simd \
105 // RUN: | FileCheck %s -check-prefix=RELAXED-SIMD
107 // RELAXED-SIMD: #define __wasm_relaxed_simd__ 1{{$}}
109 // RUN: %clang -E -dM %s -o - 2>&1 \
110 // RUN: -target wasm32-unknown-unknown -msign-ext \
111 // RUN: | FileCheck %s -check-prefix=SIGN-EXT
112 // RUN: %clang -E -dM %s -o - 2>&1 \
113 // RUN: -target wasm64-unknown-unknown -msign-ext \
114 // RUN: | FileCheck %s -check-prefix=SIGN-EXT
116 // SIGN-EXT: #define __wasm_sign_ext__ 1{{$}}
118 // RUN: %clang -E -dM %s -o - 2>&1 \
119 // RUN: -target wasm32-unknown-unknown -msimd128 \
120 // RUN: | FileCheck %s -check-prefix=SIMD128
121 // RUN: %clang -E -dM %s -o - 2>&1 \
122 // RUN: -target wasm64-unknown-unknown -msimd128 \
123 // RUN: | FileCheck %s -check-prefix=SIMD128
125 // SIMD128: #define __wasm_simd128__ 1{{$}}
127 // RUN: %clang -E -dM %s -o - 2>&1 \
128 // RUN: -target wasm32-unknown-unknown -mtail-call \
129 // RUN: | FileCheck %s -check-prefix=TAIL-CALL
130 // RUN: %clang -E -dM %s -o - 2>&1 \
131 // RUN: -target wasm64-unknown-unknown -mtail-call \
132 // RUN: | FileCheck %s -check-prefix=TAIL-CALL
134 // TAIL-CALL: #define __wasm_tail_call__ 1{{$}}
136 // RUN: %clang -E -dM %s -o - 2>&1 \
137 // RUN: -target wasm32-unknown-unknown -mcpu=mvp \
138 // RUN: | FileCheck %s -check-prefix=MVP
139 // RUN: %clang -E -dM %s -o - 2>&1 \
140 // RUN: -target wasm64-unknown-unknown -mcpu=mvp \
141 // RUN: | FileCheck %s -check-prefix=MVP
143 // MVP-NOT: #define __wasm_atomics__ 1{{$}}
144 // MVP-NOT: #define __wasm_bulk_memory__ 1{{$}}
145 // MVP-NOT: #define __wasm_exception_handling__ 1{{$}}
146 // MVP-NOT: #define __wasm_extended_const__ 1{{$}}
147 // MVP-NOT: #define __wasm_fp16__ 1{{$}}
148 // MVP-NOT: #define __wasm_multimemory__ 1{{$}}
149 // MVP-NOT: #define __wasm_multivalue__ 1{{$}}
150 // MVP-NOT: #define __wasm_mutable_globals__ 1{{$}}
151 // MVP-NOT: #define __wasm_nontrapping_fptoint__ 1{{$}}
152 // MVP-NOT: #define __wasm_reference_types__ 1{{$}}
153 // MVP-NOT: #define __wasm_relaxed_simd__ 1{{$}}
154 // MVP-NOT: #define __wasm_sign_ext__ 1{{$}}
155 // MVP-NOT: #define __wasm_simd128__ 1{{$}}
156 // MVP-NOT: #define __wasm_tail_call__ 1{{$}}
157 // MVP-NOT: #define __wasm_wide_arithmetic__ 1{{$}}
159 // RUN: %clang -E -dM %s -o - 2>&1 \
160 // RUN: -target wasm32-unknown-unknown -mcpu=generic \
161 // RUN: | FileCheck %s -check-prefix=GENERIC-INCLUDE
162 // RUN: %clang -E -dM %s -o - 2>&1 \
163 // RUN: -target wasm64-unknown-unknown -mcpu=generic \
164 // RUN: | FileCheck %s -check-prefix=GENERIC-INCLUDE
166 // GENERIC-INCLUDE-DAG: #define __wasm_bulk_memory__ 1{{$}}
167 // GENERIC-INCLUDE-DAG: #define __wasm_multivalue__ 1{{$}}
168 // GENERIC-INCLUDE-DAG: #define __wasm_mutable_globals__ 1{{$}}
169 // GENERIC-INCLUDE-DAG: #define __wasm_nontrapping_fptoint__ 1{{$}}
170 // GENERIC-INCLUDE-DAG: #define __wasm_reference_types__ 1{{$}}
171 // GENERIC-INCLUDE-DAG: #define __wasm_sign_ext__ 1{{$}}
173 // RUN: %clang -E -dM %s -o - 2>&1 \
174 // RUN: -target wasm32-unknown-unknown -mcpu=generic \
175 // RUN: | FileCheck %s -check-prefix=GENERIC
176 // RUN: %clang -E -dM %s -o - 2>&1 \
177 // RUN: -target wasm64-unknown-unknown -mcpu=generic \
178 // RUN: | FileCheck %s -check-prefix=GENERIC
180 // GENERIC-NOT: #define __wasm_atomics__ 1{{$}}
181 // GENERIC-NOT: #define __wasm_exception_handling__ 1{{$}}
182 // GENERIC-NOT: #define __wasm_extended_const__ 1{{$}}
183 // GENERIC-NOT: #define __wasm__fp16__ 1{{$}}
184 // GENERIC-NOT: #define __wasm_multimemory__ 1{{$}}
185 // GENERIC-NOT: #define __wasm_relaxed_simd__ 1{{$}}
186 // GENERIC-NOT: #define __wasm_simd128__ 1{{$}}
187 // GENERIC-NOT: #define __wasm_tail_call__ 1{{$}}
188 // GENERIC-NOT: #define __wasm_wide_arithmetic__ 1{{$}}
190 // RUN: %clang -E -dM %s -o - 2>&1 \
191 // RUN: -target wasm32-unknown-unknown -mcpu=bleeding-edge \
192 // RUN: | FileCheck %s -check-prefix=BLEEDING-EDGE-INCLUDE
193 // RUN: %clang -E -dM %s -o - 2>&1 \
194 // RUN: -target wasm64-unknown-unknown -mcpu=bleeding-edge \
195 // RUN: | FileCheck %s -check-prefix=BLEEDING-EDGE-INCLUDE
197 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_atomics__ 1{{$}}
198 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_bulk_memory__ 1{{$}}
199 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_exception_handling__ 1{{$}}
200 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_extended_const__ 1{{$}}
201 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_fp16__ 1{{$}}
202 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_multimemory__ 1{{$}}
203 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_multivalue__ 1{{$}}
204 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_mutable_globals__ 1{{$}}
205 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_nontrapping_fptoint__ 1{{$}}
206 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_reference_types__ 1{{$}}
207 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_relaxed_simd__ 1{{$}}
208 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_sign_ext__ 1{{$}}
209 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_simd128__ 1{{$}}
210 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_tail_call__ 1{{$}}
211 // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_wide_arithmetic__ 1{{$}}
213 // RUN: %clang -E -dM %s -o - 2>&1 \
214 // RUN: -target wasm32-unknown-unknown -mcpu=bleeding-edge -mno-simd128 \
215 // RUN: | FileCheck %s -check-prefix=BLEEDING-EDGE-NO-SIMD128
216 // RUN: %clang -E -dM %s -o - 2>&1 \
217 // RUN: -target wasm64-unknown-unknown -mcpu=bleeding-edge -mno-simd128 \
218 // RUN: | FileCheck %s -check-prefix=BLEEDING-EDGE-NO-SIMD128
220 // BLEEDING-EDGE-NO-SIMD128-NOT: #define __wasm_simd128__ 1{{$}}
222 // RUN: %clang -E -dM %s -o - 2>&1 \
223 // RUN: -target wasm32-unknown-unknown -mwide-arithmetic \
224 // RUN: | FileCheck %s -check-prefix=WIDE-ARITHMETIC
225 // RUN: %clang -E -dM %s -o - 2>&1 \
226 // RUN: -target wasm64-unknown-unknown -mwide-arithmetic \
227 // RUN: | FileCheck %s -check-prefix=WIDE-ARITHMETIC
229 // WIDE-ARITHMETIC: #define __wasm_wide_arithmetic__ 1{{$}}