xref: /llvm-project/clang/test/CodeGen/ffp-contract-fast-option.cpp (revision 370d0877f6271a3cb88a6d07dade3438ccd9bbae)
1 // RUN: %clang_cc1 -O3 -ffp-contract=fast -triple %itanium_abi_triple -emit-llvm -o - %s | FileCheck %s
2 
fp_contract_1(float a,float b,float c)3 float fp_contract_1(float a, float b, float c) {
4   // CHECK-LABEL: fp_contract_1fff(
5   // CHECK: fmul contract float
6   // CHECK: fadd contract float
7   return a * b + c;
8 }
9 
fp_contract_2(float a,float b,float c)10 float fp_contract_2(float a, float b, float c) {
11   // CHECK-LABEL: fp_contract_2fff(
12   // CHECK: fmul contract float
13   // CHECK: fsub contract float
14   return a * b - c;
15 }
16 
fp_contract_3(float * a,float b,float c)17 void fp_contract_3(float *a, float b, float c) {
18   // CHECK-LABEL: fp_contract_3Pfff(
19   // CHECK: fmul contract float
20   // CHECK: fadd contract float
21   a[0] += b * c;
22 }
23 
fp_contract_4(float * a,float b,float c)24 void fp_contract_4(float *a, float b, float c) {
25   // CHECK-LABEL: fp_contract_4Pfff(
26   // CHECK: fmul contract float
27   // CHECK: fsub contract float
28   a[0] -= b * c;
29 }
30