summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/div.ll
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2007-01-17 07:59:14 +0000
committerReid Spencer <rspencer@reidspencer.com>2007-01-17 07:59:14 +0000
commit83b3d8267225d585678d5d3af9bba5735f4b415d (patch)
tree9d6c2ad7bfd568186e83a39e6f03e1c0bf415715 /llvm/test/Transforms/InstCombine/div.ll
parent100602d7561ca5e245db6194bddae86357d203d4 (diff)
downloadbcm5719-llvm-83b3d8267225d585678d5d3af9bba5735f4b415d.tar.gz
bcm5719-llvm-83b3d8267225d585678d5d3af9bba5735f4b415d.zip
Regression is gone, don't try to find it on clean target.
llvm-svn: 33296
Diffstat (limited to 'llvm/test/Transforms/InstCombine/div.ll')
-rw-r--r--llvm/test/Transforms/InstCombine/div.ll68
1 files changed, 68 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/div.ll b/llvm/test/Transforms/InstCombine/div.ll
new file mode 100644
index 00000000000..18d93c2a76d
--- /dev/null
+++ b/llvm/test/Transforms/InstCombine/div.ll
@@ -0,0 +1,68 @@
+; This test makes sure that div instructions are properly eliminated.
+;
+
+; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep div
+
+implementation
+
+int %test1(int %A) {
+ %B = div int %A, 1
+ ret int %B
+}
+
+uint %test2(uint %A) {
+ %B = div uint %A, 8 ; => Shift
+ ret uint %B
+}
+
+int %test3(int %A) {
+ %B = div int 0, %A ; => 0, don't need to keep traps
+ ret int %B
+}
+
+int %test4(int %A) {
+ %B = div int %A, -1 ; 0-A
+ ret int %B
+}
+
+uint %test5(uint %A) {
+ %B = div uint %A, 4294967280
+ %C = div uint %B, 4294967292
+ ret uint %C
+}
+
+bool %test6(uint %A) {
+ %B = div uint %A, 123
+ %C = seteq uint %B, 0 ; A < 123
+ ret bool %C
+}
+
+bool %test7(uint %A) {
+ %B = div uint %A, 10
+ %C = seteq uint %B, 2 ; A >= 20 && A < 30
+ ret bool %C
+}
+
+bool %test8(ubyte %A) {
+ %B = div ubyte %A, 123
+ %C = seteq ubyte %B, 2 ; A >= 246
+ ret bool %C
+}
+
+bool %test9(ubyte %A) {
+ %B = div ubyte %A, 123
+ %C = setne ubyte %B, 2 ; A < 246
+ ret bool %C
+}
+
+uint %test10(uint %X, bool %C) {
+ %V = select bool %C, uint 64, uint 8
+ %R = udiv uint %X, %V
+ ret uint %R
+}
+
+int %test11(int %X, bool %C) {
+ %A = select bool %C, int 1024, int 32
+ %B = udiv int %X, %A
+ ret int %B
+}
OpenPOWER on IntegriCloud