Kevin P. Neal | d4ce862 | 2020-07-10 08:46:09 -0400 | [diff] [blame] | 1 | // RUN: %clang_cc1 -ftrapping-math -frounding-math -ffp-exception-behavior=strict -fexperimental-strict-floating-point -emit-llvm -o - %s | FileCheck %s -check-prefix=FPMODELSTRICT
|
Melanie Blower | 7f9b513 | 2019-12-04 12:23:46 -0800 | [diff] [blame] | 2 | // RUN: %clang_cc1 -ffp-contract=fast -emit-llvm -o - %s | FileCheck %s -check-prefix=PRECISE
|
| 3 | // RUN: %clang_cc1 -ffast-math -ffp-contract=fast -emit-llvm -o - %s | FileCheck %s -check-prefix=FAST
|
Melanie Blower | f5360d4 | 2020-05-01 10:32:06 -0700 | [diff] [blame] | 4 | // RUN: %clang_cc1 -ffast-math -emit-llvm -o - %s | FileCheck %s -check-prefix=FASTNOCONTRACT
|
Melanie Blower | 7f9b513 | 2019-12-04 12:23:46 -0800 | [diff] [blame] | 5 | // RUN: %clang_cc1 -ffast-math -ffp-contract=fast -ffp-exception-behavior=ignore -emit-llvm -o - %s | FileCheck %s -check-prefix=FAST
|
Kevin P. Neal | d4ce862 | 2020-07-10 08:46:09 -0400 | [diff] [blame] | 6 | // RUN: %clang_cc1 -ffast-math -ffp-contract=fast -ffp-exception-behavior=strict -fexperimental-strict-floating-point -emit-llvm -o - %s | FileCheck %s -check-prefix=EXCEPT
|
| 7 | // RUN: %clang_cc1 -ffast-math -ffp-contract=fast -ffp-exception-behavior=maytrap -fexperimental-strict-floating-point -emit-llvm -o - %s | FileCheck %s -check-prefix=MAYTRAP
|
| 8 | |
Melanie Blower | 7f9b513 | 2019-12-04 12:23:46 -0800 | [diff] [blame] | 9 | float f0, f1, f2;
|
| 10 |
|
| 11 | void foo() {
|
| 12 | // CHECK-LABEL: define {{.*}}void @foo()
|
| 13 |
|
| 14 | // MAYTRAP: llvm.experimental.constrained.fadd.f32(float %{{.*}}, float %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.maytrap")
|
| 15 | // EXCEPT: llvm.experimental.constrained.fadd.f32(float %{{.*}}, float %{{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
|
| 16 | // FPMODELSTRICT: llvm.experimental.constrained.fadd.f32(float %{{.*}}, float %{{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
|
| 17 | // STRICTEXCEPT: llvm.experimental.constrained.fadd.f32(float %{{.*}}, float %{{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
|
| 18 | // STRICTNOEXCEPT: llvm.experimental.constrained.fadd.f32(float %{{.*}}, float %{{.*}}, metadata !"round.dynamic", metadata !"fpexcept.ignore")
|
| 19 | // PRECISE: fadd contract float %{{.*}}, %{{.*}}
|
| 20 | // FAST: fadd fast
|
Melanie Blower | f5360d4 | 2020-05-01 10:32:06 -0700 | [diff] [blame] | 21 | // FASTNOCONTRACT: fadd reassoc nnan ninf nsz arcp afn float
|
Melanie Blower | 7f9b513 | 2019-12-04 12:23:46 -0800 | [diff] [blame] | 22 | f0 = f1 + f2;
|
| 23 |
|
| 24 | // CHECK: ret
|
| 25 | }
|