Lines Matching +full:zero +full:- +full:point
1 // RUN: %clang_cc1 -fexperimental-strict-floating-point -DEXCEPT=1 \
2 // RUN: -fcxx-exceptions -triple x86_64-linux-gnu -emit-llvm -o - %s \
3 // RUN: | FileCheck -check-prefix=CHECK-NS %s
5 // RUN: %clang_cc1 -fexperimental-strict-floating-point \
6 // RUN: -triple x86_64-linux-gnu -emit-llvm -o - %s | FileCheck %s \
7 // RUN: -check-prefixes=CHECK-DEFAULT,CHECK-CONST-ARGS
9 // RUN: %clang_cc1 -fexperimental-strict-floating-point -DFENV_ON=1 \
10 // RUN: -triple x86_64-linux-gnu -emit-llvm -o - %s \
11 // RUN: | FileCheck -check-prefix=CHECK-FENV %s
13 // RUN: %clang_cc1 -fexperimental-strict-floating-point -DNF128 \
14 // RUN: -triple %itanium_abi_triple -O3 -emit-llvm -o - %s \
15 // RUN: | FileCheck -check-prefix=CHECK-O3 %s
17 // RUN: %clang_cc1 -fexperimental-strict-floating-point \
18 // RUN: -triple x86_64-linux-gnu -emit-llvm -o - %s -ffp-eval-method=source \
19 // RUN: | FileCheck %s -check-prefixes=CHECK-SOURCE,CHECK-CONST-ARGS
21 // RUN: %clang_cc1 -fexperimental-strict-floating-point \
22 // RUN: -triple x86_64-linux-gnu -emit-llvm -o - %s -ffp-eval-method=double \
23 // RUN: | FileCheck %s -check-prefixes=CHECK-DOUBLE,CHECK-CONST-ARGS
25 // RUN: %clang_cc1 -fexperimental-strict-floating-point \
26 // RUN: -triple x86_64-linux-gnu -emit-llvm -o - %s -ffp-eval-method=extended \
27 // RUN: -mlong-double-80 | FileCheck %s \
28 // RUN: -check-prefixes=CHECK-EXTENDED,CHECK-CONST-ARGS
30 // RUN: %clang_cc1 -fexperimental-strict-floating-point \
31 // RUN: -triple i386-linux-gnu -emit-llvm -o - %s -ffp-eval-method=source \
32 // RUN: | FileCheck %s -check-prefix=CHECK-SOURCE
34 // RUN: %clang_cc1 -fexperimental-strict-floating-point -triple i386-linux-gnu \
35 // RUN: -emit-llvm -o - %s -ffp-eval-method=double | FileCheck %s \
36 // RUN: -check-prefix=CHECK-DOUBLE
38 // RUN: %clang_cc1 -fexperimental-strict-floating-point -triple i386-linux-gnu \
39 // RUN: -emit-llvm -o - %s -ffp-eval-method=extended -mlong-double-80 \
40 // RUN: | FileCheck %s -check-prefix=CHECK-EXTENDED
42 // RUN: %clang_cc1 -triple powerpc-unknown-aix -DNF128 -emit-llvm -o - %s \
43 // RUN: | FileCheck %s -check-prefix=CHECK-AIX
48 __FLT_EVAL_METHOD__ == -1; in f()
54 // CHECK-O3: _Z12fp_precise_1fff in fp_precise_1()
55 // CHECK-O3: %[[M:.+]] = fmul fast float{{.*}} in fp_precise_1()
56 // CHECK-O3: fadd fast float %[[M]], %c in fp_precise_1()
63 // CHECK-O3: _Z12fp_precise_2fff in fp_precise_2()
64 // CHECK-O3: %[[M:.+]] = fmul float{{.*}} in fp_precise_2()
65 // CHECK-O3: fadd float %[[M]], %c in fp_precise_2()
83 // CHECK-O3: _Z12fp_precise_3fff in fp_precise_3()
84 // CHECK-O3: %[[M:.+]] = fmul fast float{{.*}} in fp_precise_3()
85 // CHECK-O3: fadd fast float %[[M]], %c in fp_precise_3()
98 // CHECK-O3: _ZN12fp_precise_4IiE6methodEfff
99 // CHECK-O3: %[[M:.+]] = fmul fast float{{.*}}
100 // CHECK-O3: fadd fast float %[[M]], %c
102 // Check file-scoped float_control
106 // CHECK-O3: _Z12fp_precise_5fff in fp_precise_5()
107 // CHECK-O3: %[[M:.+]] = fmul fast float{{.*}} in fp_precise_5()
108 // CHECK-O3: fadd fast float %[[M]], %c in fp_precise_5()
114 // CHECK-LABEL: define{{.*}} float @_Z3fffff{{.*}} in fff()
136 // CHECK-LABEL: define{{.*}} float @_Z13check_preciseff{{.*}} in check_precise()
153 // CHECK-LABEL define{{.*}} float @_Z9fma_test2fff{{.*}} in fma_test2()
161 // CHECK-LABEL define{{.*}} float @_Z9fma_test1fff{{.*}} in fma_test1()
184 // CHECK-LABEL define{{.*}} float {{.*}}test_OperatorCall{{.*}}
189 // CHECK-LABEL: define {{.*}}callt{{.*}}
194 //CHECK-FENV: llvm.experimental.constrained.fmul{{.*}} in callt()
197 // CHECK-LABEL: define {{.*}}myAdd{{.*}}
201 // Check that floating point constant folding doesn't occur if in myAdd()
203 //CHECK-FENV: llvm.experimental.constrained.fadd{{.*}}double 1.0{{.*}}double 2.0{{.*}} in myAdd()
206 //CHECK-FENV: llvm.experimental.constrained.fptrunc.f32.f64{{.*}} in myAdd()
207 //CHECK-NOT: fdiv in myAdd()
215 float exc_on(double x, float zero) { in exc_on() argument
216 // CHECK-NS: define {{.*}}exc_on{{.*}} in exc_on()
218 x = 1.0 / zero; /* division by zero, the result unused */ in exc_on()
219 //CHECK-NS: llvm.experimental.constrained.fdiv{{.*}} in exc_on()
221 return zero; in exc_on()
226 float exc_still_on(double x, float zero) { in exc_still_on() argument
227 // CHECK-NS: define {{.*}}exc_still_on{{.*}} in exc_still_on()
229 x = 1.0 / zero; /* division by zero, the result unused */ in exc_still_on()
230 //CHECK-NS: llvm.experimental.constrained.fdiv{{.*}} in exc_still_on()
232 return zero; in exc_still_on()
236 float exc_off(double x, float zero) { in exc_off() argument
237 // CHECK-NS: define {{.*}}exc_off{{.*}} in exc_off()
239 x = 1.0 / zero; /* division by zero, the result unused */ in exc_off()
240 //CHECK-NS: fdiv double in exc_off()
242 return zero; in exc_off()
248 T exc_on(double x, T zero) { in exc_on() argument
249 // CHECK-NS: define {{.*}}fc_template_namespace{{.*}} in exc_on()
251 x = 1.0 / zero; /* division by zero, the result unused */ in exc_on()
252 //CHECK-NS: llvm.experimental.constrained.fdiv{{.*}} in exc_on()
254 return zero; in exc_on()
281 // CHECK-NS: fsub float in mySub()
282 // CHECK-SOURCE: fsub float in mySub()
283 // CHECK-DOUBLE: fpext float in mySub()
284 // CHECK-DOUBLE: fpext float in mySub()
285 // CHECK-DOUBLE: fsub double in mySub()
286 // CHECK-DOUBLE: fptrunc double {{.*}} to float in mySub()
287 // CHECK-EXTENDED: fpext float in mySub()
288 // CHECK-EXTENDED: fpext float in mySub()
289 // CHECK-EXTENDED: fsub double in mySub()
290 // CHECK-EXTENDED: fptrunc double {{.*}} to float in mySub()
291 return x - y; in mySub()
297 return x - y; in mySubSource()
304 return x - y; in mySubExtended()
309 // CHECK-AIX: fsub double in mySubExtended()
310 // CHECK-AIX: fptrunc double in mySubExtended()
316 return x - y; in mySubDouble()
328 // CHECK-NEXT: load fp128 in mySub128()
329 // CHECK-NEXT: fsub fp128 in mySub128()
330 // CHECK-NEXT: ret fp128 in mySub128()
331 return x - y; in mySub128()
337 *res = *x - *y; in mySubfp16()
339 // CHECK-NEXT: load half in mySubfp16()
340 // CHECK-NEXT: fpext half{{.*}} in mySubfp16()
341 // CHECK-NEXT: load half in mySubfp16()
342 // CHECK-NEXT: load half in mySubfp16()
343 // CHECK-NS: fpext half{{.*}} to float in mySubfp16()
344 // CHECK-DEFAULT: fpext half{{.*}} to float in mySubfp16()
345 // CHECK-DOUBLE: fpext half{{.*}} to float in mySubfp16()
346 // CHECK-EXTENDED: fpext half{{.*}} to float in mySubfp16()
347 // CHECK-NEXT: fsub in mySubfp16()
348 // CHECK-NEXT: fptrunc {{.*}}to half in mySubfp16()
349 // CHECK-NS: fptrunc float {{.*}} to half in mySubfp16()
350 // CHECK-DOUBLE: fptrunc float {{.*}} to half in mySubfp16()
351 // CHECK-EXTENDED: fptrunc float {{.*}} to half in mySubfp16()
356 // CHECK-CONST-ARGS: fdiv float in Div()
363 // CHECK-CONST-ARGS: fdiv x86_fp80 in DivExtended()
364 // CHECK-CONST-ARGS: fptrunc x86_fp80 in DivExtended()
371 // CHECK-CONST-ARGS: fdiv double in DivDouble()
372 // CHECK-CONST-ARGS: fptrunc double in DivDouble()
379 // CHECK-CONST-ARGS: fdiv float in DivSource()