blob: 6565bbb3d20172be41f004b96c77eab37df8d37d [file] [log] [blame]
Chad Rosier11ab9412014-08-14 15:23:01 +00001; RUN: opt -reassociate -S < %s | FileCheck %s
2
3declare void @use(float)
4
5define void @test1(float %x, float %y) {
6; CHECK-LABEL: test1
Chad Rosier90a2f9b2014-11-19 23:21:20 +00007; CHECK: fmul fast float %y, %x
8; CHECK: fmul fast float %y, %x
Chad Rosier11ab9412014-08-14 15:23:01 +00009; CHECK: fsub fast float %1, %2
10; CHECK: call void @use(float %{{.*}})
11; CHECK: call void @use(float %{{.*}})
12
13 %1 = fmul fast float %x, %y
14 %2 = fmul fast float %y, %x
15 %3 = fsub fast float %1, %2
16 call void @use(float %1)
17 call void @use(float %3)
18 ret void
19}
20
21define float @test2(float %x, float %y) {
22; CHECK-LABEL: test2
Chad Rosier90a2f9b2014-11-19 23:21:20 +000023; CHECK-NEXT: fmul fast float %y, %x
24; CHECK-NEXT: fmul fast float %y, %x
Chad Rosier11ab9412014-08-14 15:23:01 +000025; CHECK-NEXT: fsub fast float %1, %2
26; CHECK-NEXT: ret float %3
27
28 %1 = fmul fast float %x, %y
29 %2 = fmul fast float %y, %x
30 %3 = fsub fast float %1, %2
31 ret float %3
32}
33
34define float @test3(float %x, float %y) {
35; CHECK-LABEL: test3
Owen Anderson2de9f542015-11-16 18:07:30 +000036; CHECK-NEXT: %factor = fmul fast float %x, 2.000000e+00
37; CHECK-NEXT: %tmp1 = fmul fast float %factor, %y
Chad Rosier11ab9412014-08-14 15:23:01 +000038; CHECK-NEXT: ret float %tmp1
39
40 %1 = fmul fast float %x, %y
41 %2 = fmul fast float %y, %x
42 %3 = fadd fast float %1, %2
43 ret float %3
44}