1*9880d681SAndroid Build Coastguard Worker; RUN: opt -instcombine -S < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; CHECK: test1 4*9880d681SAndroid Build Coastguard Workerdefine double @test1(float %a, double %b) nounwind readnone ssp uwtable { 5*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: fsub 6*9880d681SAndroid Build Coastguard Worker; CHECK: fpext 7*9880d681SAndroid Build Coastguard Worker; CHECK: fadd 8*9880d681SAndroid Build Coastguard Worker %1 = fsub float -0.000000e+00, %a 9*9880d681SAndroid Build Coastguard Worker %2 = fpext float %1 to double 10*9880d681SAndroid Build Coastguard Worker %3 = fsub double %b, %2 11*9880d681SAndroid Build Coastguard Worker ret double %3 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; CHECK: test2 15*9880d681SAndroid Build Coastguard Workerdefine double @test2(float %a, double %b) nounwind readnone ssp uwtable { 16*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: fsub 17*9880d681SAndroid Build Coastguard Worker; CHECK: fpext 18*9880d681SAndroid Build Coastguard Worker; CHECK: fadd fast 19*9880d681SAndroid Build Coastguard Worker %1 = fsub float -0.000000e+00, %a 20*9880d681SAndroid Build Coastguard Worker %2 = fpext float %1 to double 21*9880d681SAndroid Build Coastguard Worker %3 = fsub fast double %b, %2 22*9880d681SAndroid Build Coastguard Worker ret double %3 23*9880d681SAndroid Build Coastguard Worker} 24