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