• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt < %s -instcombine -S | FileCheck %s
2
3define double @mylog(double %x, double %y) #0 {
4entry:
5  %pow = call double @llvm.pow.f64(double %x, double %y)
6  %call = call double @log(double %pow) #0
7  ret double %call
8}
9
10; CHECK-LABEL: define double @mylog(
11; CHECK:   %log = call fast double @log(double %x) #0
12; CHECK:   %mul = fmul fast double %log, %y
13; CHECK:   ret double %mul
14; CHECK: }
15
16define double @test2(double ()* %fptr, double %p1) #0 {
17  %call1 = call double %fptr()
18  %pow = call double @log(double %call1)
19  ret double %pow
20}
21
22; CHECK-LABEL: @test2
23; CHECK: log
24
25define double @test3(double %x) #0 {
26  %call2 = call double @exp2(double %x) #0
27  %call3 = call double @log(double %call2) #0
28  ret double %call3
29}
30
31; CHECK-LABEL: @test3
32; CHECK:  %call2 = call double @exp2(double %x) #0
33; CHECK:  %logmul = fmul fast double %x, 0x3FE62E42FEFA39EF
34; CHECK:  ret double %logmul
35; CHECK: }
36
37declare double @log(double) #0
38declare double @exp2(double) #0
39declare double @llvm.pow.f64(double, double)
40
41attributes #0 = { "unsafe-fp-math"="true" }
42