summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/apint-select.ll
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2007-03-23 20:48:34 +0000
committerReid Spencer <rspencer@reidspencer.com>2007-03-23 20:48:34 +0000
commitea8b07ee6badc731c52a0e1668c7a8eacf9a3b1d (patch)
tree9c0b8d2ca1fb929ef8028f6689ee28114e409e83 /llvm/test/Transforms/InstCombine/apint-select.ll
parent6d39206bc2bd818180b798483188899716410554 (diff)
downloadbcm5719-llvm-ea8b07ee6badc731c52a0e1668c7a8eacf9a3b1d.tar.gz
bcm5719-llvm-ea8b07ee6badc731c52a0e1668c7a8eacf9a3b1d.zip
Add test case for testing InstCombine with arbitrary precision integer
types. These tests mimic the integer test cases in the normal InstCombine test suite but use "strange" integer bit widths. Most tests written by Zhou Sheng, a few by me. llvm-svn: 35284
Diffstat (limited to 'llvm/test/Transforms/InstCombine/apint-select.ll')
-rw-r--r--llvm/test/Transforms/InstCombine/apint-select.ll46
1 files changed, 46 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/apint-select.ll b/llvm/test/Transforms/InstCombine/apint-select.ll
new file mode 100644
index 00000000000..d804a34f6e4
--- /dev/null
+++ b/llvm/test/Transforms/InstCombine/apint-select.ll
@@ -0,0 +1,46 @@
+; This test makes sure that these instructions are properly eliminated.
+
+; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep select &&
+; RUN: llvm-as < %s | opt -instcombine -disable-output
+
+implementation
+
+define i41 @test1(i1 %C) {
+ %V = select i1 %C, i41 1, i41 0 ; V = C
+ ret i41 %V
+}
+
+define i999 @test2(i1 %C) {
+ %V = select i1 %C, i999 0, i999 1 ; V = C
+ ret i999 %V
+}
+
+define i41 @test3(i41 %X) {
+ ;; (x <s 0) ? -1 : 0 -> ashr x, 31
+ %t = icmp slt i41 %X, 0
+ %V = select i1 %t, i41 -1, i41 0
+ ret i41 %V
+}
+
+define i1023 @test4(i1023 %X) {
+ ;; (x <s 0) ? -1 : 0 -> ashr x, 31
+ %t = icmp slt i1023 %X, 0
+ %V = select i1 %t, i1023 -1, i1023 0
+ ret i1023 %V
+}
+
+define i41 @test5(i41 %X) {
+ ;; ((X & 27) ? 27 : 0)
+ %Y = and i41 %X, 32
+ %t = icmp ne i41 %Y, 0
+ %V = select i1 %t, i41 32, i41 0
+ ret i41 %V
+}
+
+define i1023 @test6(i1023 %X) {
+ ;; ((X & 27) ? 27 : 0)
+ %Y = and i1023 %X, 64
+ %t = icmp ne i1023 %Y, 0
+ %V = select i1 %t, i1023 64, i1023 0
+ ret i1023 %V
+}
OpenPOWER on IntegriCloud