diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2007-01-17 07:59:14 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2007-01-17 07:59:14 +0000 |
commit | 83b3d8267225d585678d5d3af9bba5735f4b415d (patch) | |
tree | 9d6c2ad7bfd568186e83a39e6f03e1c0bf415715 /llvm/test/Transforms/InstCombine/div.ll | |
parent | 100602d7561ca5e245db6194bddae86357d203d4 (diff) | |
download | bcm5719-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.ll | 68 |
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 +} |