| // RUN: %clang_cc1 -O3 -ffp-contract=fast -triple %itanium_abi_triple -emit-llvm -o - %s | FileCheck %s |
| |
| float fp_contract_1(float a, float b, float c) { |
| // CHECK-LABEL: fp_contract_1fff( |
| // CHECK: fmul contract float |
| // CHECK: fadd contract float |
| return a * b + c; |
| } |
| |
| float fp_contract_2(float a, float b, float c) { |
| // CHECK-LABEL: fp_contract_2fff( |
| // CHECK: fmul contract float |
| // CHECK: fsub contract float |
| return a * b - c; |
| } |
| |
| void fp_contract_3(float *a, float b, float c) { |
| // CHECK-LABEL: fp_contract_3Pfff( |
| // CHECK: fmul contract float |
| // CHECK: fadd contract float |
| a[0] += b * c; |
| } |
| |
| void fp_contract_4(float *a, float b, float c) { |
| // CHECK-LABEL: fp_contract_4Pfff( |
| // CHECK: fmul contract float |
| // CHECK: fsub contract float |
| a[0] -= b * c; |
| } |