Add a test case for a particular udiv/select transform.
authorReid Spencer <rspencer@reidspencer.com>
Mon, 5 Mar 2007 22:51:08 +0000 (22:51 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Mon, 5 Mar 2007 22:51:08 +0000 (22:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34935 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/InstCombine/udiv_select_to_select_shift.ll [new file with mode: 0644]

diff --git a/test/Transforms/InstCombine/udiv_select_to_select_shift.ll b/test/Transforms/InstCombine/udiv_select_to_select_shift.ll
new file mode 100644 (file)
index 0000000..33740d5
--- /dev/null
@@ -0,0 +1,17 @@
+; This tests that this transform:
+; udiv X, (Select Cond, C1, C2) --> Select Cond, (shr X, C1), (shr X, C2)
+;
+; RUN: llvm-as %s -o - | opt -instcombine | llvm-dis -f -o %t && \
+; RUN:   grep select %t | wc -l | grep 1 && \
+; RUN:   grep lshr %t | wc -l | grep 2 && \ 
+; RUN:   grep udiv %t | wc -l | grep 0
+
+define i64 @test(i64 %X, i1 %Cond ) {
+entry:
+        %divisor1 = select i1 %Cond, i64 8, i64 16
+        %quotient1 = udiv i64 %X, %divisor1
+        %divisor2 = select i1 %Cond, i64 8, i64 0
+        %quotient2 = udiv i64 %X, %divisor2
+        %sum = add i64 %quotient1, %quotient2
+        ret i64 %sum
+}