1*9880d681SAndroid Build Coastguard Worker; RUN: opt -gvn -S < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine double @test1(double %x, double %y) { 4*9880d681SAndroid Build Coastguard Worker; CHECK: @test1(double %x, double %y) 5*9880d681SAndroid Build Coastguard Worker; CHECK: %add1 = fadd double %x, %y 6*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: fpmath 7*9880d681SAndroid Build Coastguard Worker; CHECK: %foo = fadd double %add1, %add1 8*9880d681SAndroid Build Coastguard Worker %add1 = fadd double %x, %y, !fpmath !0 9*9880d681SAndroid Build Coastguard Worker %add2 = fadd double %x, %y 10*9880d681SAndroid Build Coastguard Worker %foo = fadd double %add1, %add2 11*9880d681SAndroid Build Coastguard Worker ret double %foo 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine double @test2(double %x, double %y) { 15*9880d681SAndroid Build Coastguard Worker; CHECK: @test2(double %x, double %y) 16*9880d681SAndroid Build Coastguard Worker; CHECK: %add1 = fadd double %x, %y, !fpmath !0 17*9880d681SAndroid Build Coastguard Worker; CHECK: %foo = fadd double %add1, %add1 18*9880d681SAndroid Build Coastguard Worker %add1 = fadd double %x, %y, !fpmath !0 19*9880d681SAndroid Build Coastguard Worker %add2 = fadd double %x, %y, !fpmath !0 20*9880d681SAndroid Build Coastguard Worker %foo = fadd double %add1, %add2 21*9880d681SAndroid Build Coastguard Worker ret double %foo 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerdefine double @test3(double %x, double %y) { 25*9880d681SAndroid Build Coastguard Worker; CHECK: @test3(double %x, double %y) 26*9880d681SAndroid Build Coastguard Worker; CHECK: %add1 = fadd double %x, %y, !fpmath !1 27*9880d681SAndroid Build Coastguard Worker; CHECK: %foo = fadd double %add1, %add1 28*9880d681SAndroid Build Coastguard Worker %add1 = fadd double %x, %y, !fpmath !1 29*9880d681SAndroid Build Coastguard Worker %add2 = fadd double %x, %y, !fpmath !0 30*9880d681SAndroid Build Coastguard Worker %foo = fadd double %add1, %add2 31*9880d681SAndroid Build Coastguard Worker ret double %foo 32*9880d681SAndroid Build Coastguard Worker} 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerdefine double @test4(double %x, double %y) { 35*9880d681SAndroid Build Coastguard Worker; CHECK: @test4(double %x, double %y) 36*9880d681SAndroid Build Coastguard Worker; CHECK: %add1 = fadd double %x, %y, !fpmath !1 37*9880d681SAndroid Build Coastguard Worker; CHECK: %foo = fadd double %add1, %add1 38*9880d681SAndroid Build Coastguard Worker %add1 = fadd double %x, %y, !fpmath !0 39*9880d681SAndroid Build Coastguard Worker %add2 = fadd double %x, %y, !fpmath !1 40*9880d681SAndroid Build Coastguard Worker %foo = fadd double %add1, %add2 41*9880d681SAndroid Build Coastguard Worker ret double %foo 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker!0 = !{ float 5.0 } 45*9880d681SAndroid Build Coastguard Worker!1 = !{ float 2.5 } 46