Chris Lattner | 8170e8f | 2002-05-06 05:35:20 +0000 | [diff] [blame] | 1 | ; This test makes sure that div instructions are properly eliminated. |
| 2 | ; |
| 3 | |
Misha Brukman | edf4bab | 2003-09-16 15:29:54 +0000 | [diff] [blame] | 4 | ; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep div |
Chris Lattner | 8170e8f | 2002-05-06 05:35:20 +0000 | [diff] [blame] | 5 | |
| 6 | implementation |
| 7 | |
Chris Lattner | 2bf6c22 | 2003-02-18 19:16:45 +0000 | [diff] [blame] | 8 | int %test1(int %A) { |
Chris Lattner | 8170e8f | 2002-05-06 05:35:20 +0000 | [diff] [blame] | 9 | %B = div int %A, 1 |
| 10 | ret int %B |
Chris Lattner | 2bf6c22 | 2003-02-18 19:16:45 +0000 | [diff] [blame] | 11 | } |
Chris Lattner | c5fccf3 | 2003-02-18 19:28:47 +0000 | [diff] [blame] | 12 | |
| 13 | uint %test2(uint %A) { |
| 14 | %B = div uint %A, 8 ; => Shift |
Chris Lattner | e24003a | 2004-04-26 14:01:47 +0000 | [diff] [blame^] | 15 | ret uint %B |
Chris Lattner | c5fccf3 | 2003-02-18 19:28:47 +0000 | [diff] [blame] | 16 | } |
| 17 | |
| 18 | int %test3(int %A) { |
| 19 | %B = div int 0, %A ; => 0, don't need to keep traps |
| 20 | ret int %B |
| 21 | } |
Chris Lattner | e24003a | 2004-04-26 14:01:47 +0000 | [diff] [blame^] | 22 | |
| 23 | int %test4(int %A) { |
| 24 | %B = div int %A, -1 ; 0-A |
| 25 | ret int %B |
| 26 | } |