xref: /llvm-project/llvm/test/Transforms/NewGVN/propagate-ir-flags.ll (revision fb4a836b5c8513a7d40d82b4d5d0f546d2a354f4)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
2; RUN: opt < %s -passes=newgvn -S | FileCheck %s
3
4define double @func_fast(double %a, double %b) {
5; CHECK-LABEL: define double @func_fast
6; CHECK-SAME: (double [[A:%.*]], double [[B:%.*]]) {
7; CHECK-NEXT:  entry:
8; CHECK-NEXT:    [[A_ADDR:%.*]] = alloca double, align 8
9; CHECK-NEXT:    [[ADD:%.*]] = fadd fast double [[B]], 3.000000e+00
10; CHECK-NEXT:    store double [[ADD]], ptr [[A_ADDR]], align 8
11; CHECK-NEXT:    ret double [[ADD]]
12;
13entry:
14  %a.addr = alloca double, align 8
15  %add = fadd fast double %b, 3.000000e+00
16  store double %add, ptr %a.addr, align 8
17  %load_add = load double, ptr %a.addr, align 8
18  ret double %load_add
19}
20
21define double @func_no_fast(double %a, double %b) {
22; CHECK-LABEL: define double @func_no_fast
23; CHECK-SAME: (double [[A:%.*]], double [[B:%.*]]) {
24; CHECK-NEXT:  entry:
25; CHECK-NEXT:    [[A_ADDR:%.*]] = alloca double, align 8
26; CHECK-NEXT:    [[ADD:%.*]] = fadd double [[B]], 3.000000e+00
27; CHECK-NEXT:    store double [[ADD]], ptr [[A_ADDR]], align 8
28; CHECK-NEXT:    ret double [[ADD]]
29;
30entry:
31  %a.addr = alloca double, align 8
32  %add = fadd fast double %b, 3.000000e+00
33  store double %add, ptr %a.addr, align 8
34  %duplicated_add = fadd double %b, 3.000000e+00
35  ret double %duplicated_add
36}
37
38