blob: 52511a7943ce838216e8b785f55bfe78bd3bc75e [file] [log] [blame]
Chris Lattner8170e8f2002-05-06 05:35:20 +00001; This test makes sure that div instructions are properly eliminated.
2;
3
Misha Brukmanedf4bab2003-09-16 15:29:54 +00004; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep div
Chris Lattner8170e8f2002-05-06 05:35:20 +00005
6implementation
7
Chris Lattner2bf6c222003-02-18 19:16:45 +00008int %test1(int %A) {
Chris Lattner8170e8f2002-05-06 05:35:20 +00009 %B = div int %A, 1
10 ret int %B
Chris Lattner2bf6c222003-02-18 19:16:45 +000011}
Chris Lattnerc5fccf32003-02-18 19:28:47 +000012
13uint %test2(uint %A) {
14 %B = div uint %A, 8 ; => Shift
Chris Lattnere24003a2004-04-26 14:01:47 +000015 ret uint %B
Chris Lattnerc5fccf32003-02-18 19:28:47 +000016}
17
18int %test3(int %A) {
19 %B = div int 0, %A ; => 0, don't need to keep traps
20 ret int %B
21}
Chris Lattnere24003a2004-04-26 14:01:47 +000022
23int %test4(int %A) {
24 %B = div int %A, -1 ; 0-A
25 ret int %B
26}