summaryrefslogtreecommitdiffstats
path: root/test/Transforms/ConstProp/calls.ll
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2011-02-20 12:57:14 +0000
committerdim <dim@FreeBSD.org>2011-02-20 12:57:14 +0000
commitcbb70ce070d220642b038ea101d9c0f9fbf860d6 (patch)
treed2b61ce94e654cb01a254d2195259db5f9cc3f3c /test/Transforms/ConstProp/calls.ll
parent4ace901e87dac5bbbac78ed325e75462e48e386e (diff)
downloadFreeBSD-src-cbb70ce070d220642b038ea101d9c0f9fbf860d6.zip
FreeBSD-src-cbb70ce070d220642b038ea101d9c0f9fbf860d6.tar.gz
Vendor import of llvm trunk r126079:
http://llvm.org/svn/llvm-project/llvm/trunk@126079
Diffstat (limited to 'test/Transforms/ConstProp/calls.ll')
-rw-r--r--test/Transforms/ConstProp/calls.ll58
1 files changed, 42 insertions, 16 deletions
diff --git a/test/Transforms/ConstProp/calls.ll b/test/Transforms/ConstProp/calls.ll
index 3c266fe..82d7324 100644
--- a/test/Transforms/ConstProp/calls.ll
+++ b/test/Transforms/ConstProp/calls.ll
@@ -1,4 +1,4 @@
-; RUN: opt < %s -constprop -S | not grep call
+; RUN: opt < %s -constprop -S | FileCheck %s
declare double @cos(double)
@@ -8,23 +8,49 @@ declare double @tan(double)
declare double @sqrt(double)
-declare i1 @llvm.isunordered.f64(double, double)
-
define double @T() {
- %A = call double @cos( double 0.000000e+00 ) ; <double> [#uses=1]
- %B = call double @sin( double 0.000000e+00 ) ; <double> [#uses=1]
- %a = fadd double %A, %B ; <double> [#uses=1]
- %C = call double @tan( double 0.000000e+00 ) ; <double> [#uses=1]
- %b = fadd double %a, %C ; <double> [#uses=1]
- %D = call double @sqrt( double 4.000000e+00 ) ; <double> [#uses=1]
- %c = fadd double %b, %D ; <double> [#uses=1]
- ret double %c
+; CHECK: @T
+; CHECK-NOT: call
+; CHECK: ret
+ %A = call double @cos(double 0.000000e+00)
+ %B = call double @sin(double 0.000000e+00)
+ %a = fadd double %A, %B
+ %C = call double @tan(double 0.000000e+00)
+ %b = fadd double %a, %C
+ %D = call double @sqrt(double 4.000000e+00)
+ %c = fadd double %b, %D
+ ret double %c
}
-define i1 @TNAN() {
- %A = fcmp uno double 0x7FF8000000000000, 1.000000e+00 ; <i1> [#uses=1]
- %B = fcmp uno double 1.230000e+02, 1.000000e+00 ; <i1> [#uses=1]
- %C = or i1 %A, %B ; <i1> [#uses=1]
- ret i1 %C
+define i1 @test_sse_cvt() nounwind readnone {
+; CHECK: @test_sse_cvt
+; CHECK-NOT: call
+; CHECK: ret i1 true
+entry:
+ %i0 = tail call i32 @llvm.x86.sse.cvtss2si(<4 x float> <float 1.75, float undef, float undef, float undef>) nounwind
+ %i1 = tail call i32 @llvm.x86.sse.cvttss2si(<4 x float> <float 1.75, float undef, float undef, float undef>) nounwind
+ %i2 = tail call i64 @llvm.x86.sse.cvtss2si64(<4 x float> <float 1.75, float undef, float undef, float undef>) nounwind
+ %i3 = tail call i64 @llvm.x86.sse.cvttss2si64(<4 x float> <float 1.75, float undef, float undef, float undef>) nounwind
+ %i4 = call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> <double 1.75, double undef>) nounwind
+ %i5 = call i32 @llvm.x86.sse2.cvttsd2si(<2 x double> <double 1.75, double undef>) nounwind
+ %i6 = call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> <double 1.75, double undef>) nounwind
+ %i7 = call i64 @llvm.x86.sse2.cvttsd2si64(<2 x double> <double 1.75, double undef>) nounwind
+ %sum11 = add i32 %i0, %i1
+ %sum12 = add i32 %i4, %i5
+ %sum1 = add i32 %sum11, %sum12
+ %sum21 = add i64 %i2, %i3
+ %sum22 = add i64 %i6, %i7
+ %sum2 = add i64 %sum21, %sum22
+ %sum1.sext = sext i32 %sum1 to i64
+ %b = icmp eq i64 %sum1.sext, %sum2
+ ret i1 %b
}
+declare i32 @llvm.x86.sse.cvtss2si(<4 x float>) nounwind readnone
+declare i32 @llvm.x86.sse.cvttss2si(<4 x float>) nounwind readnone
+declare i64 @llvm.x86.sse.cvtss2si64(<4 x float>) nounwind readnone
+declare i64 @llvm.x86.sse.cvttss2si64(<4 x float>) nounwind readnone
+declare i32 @llvm.x86.sse2.cvtsd2si(<2 x double>) nounwind readnone
+declare i32 @llvm.x86.sse2.cvttsd2si(<2 x double>) nounwind readnone
+declare i64 @llvm.x86.sse2.cvtsd2si64(<2 x double>) nounwind readnone
+declare i64 @llvm.x86.sse2.cvttsd2si64(<2 x double>) nounwind readnone
OpenPOWER on IntegriCloud