1 | // RUN: %clang_cc1 -O3 -ffp-contract=fast -triple %itanium_abi_triple -emit-llvm -o - %s | FileCheck %s |
2 | |
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 | |
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 | |
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 | |
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 | |