Reimplement r108639 in InstCombine rather than DAGCombine.
[oota-llvm.git] / test / CodeGen / X86 / 2010-07-18-sqrt.ll
1 ; RUN: llc < %s -march=x86 -mattr=+sse2 | FileCheck %s
2 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
3 target triple = "x86_64-apple-darwin10.0.0"
4
5 define float @foo(float %x) nounwind readnone ssp {
6 entry:
7 ; CHECK-NOT: cvtss2sd
8 ; CHECK-NOT: sqrtsd
9 ; CHECK-NOT: cvtsd2ss
10 ; CHECK: sqrtss
11   %conv = fpext float %x to double                ; <double> [#uses=1]
12   %call = tail call double @sqrt(double %conv) nounwind ; <double> [#uses=1]
13   %conv1 = fptrunc double %call to float          ; <float> [#uses=1]
14   ret float %conv1
15 }
16
17 declare double @sqrt(double) readnone