| Chris Lattner | 74e9547 | 2002-05-06 05:43:36 +0000 | [diff] [blame] | 1 | ; This test makes sure that these instructions are properly eliminated. |
| 2 | ; |
| 3 | |
| Chris Lattner | f6f95d0 | 2002-08-02 19:27:58 +0000 | [diff] [blame] | 4 | ; RUN: if as < %s | opt -instcombine | dis | grep sh |
| Chris Lattner | 74e9547 | 2002-05-06 05:43:36 +0000 | [diff] [blame] | 5 | ; RUN: then exit 1 |
| 6 | ; RUN: else exit 0 |
| 7 | ; RUN: fi |
| 8 | |
| 9 | implementation |
| 10 | |
| 11 | int "test1"(int %A) { |
| 12 | %B = shl int %A, ubyte 0 |
| 13 | ret int %B |
| 14 | } |
| 15 | |
| 16 | int "test2"(ubyte %A) { |
| 17 | %B = shl int 0, ubyte %A |
| 18 | ret int %B |
| 19 | } |
| 20 | |
| 21 | int "test3"(int %A) { |
| 22 | %B = shr int %A, ubyte 0 |
| 23 | ret int %B |
| 24 | } |
| 25 | |
| 26 | int "test4"(ubyte %A) { |
| 27 | %B = shr int 0, ubyte %A |
| 28 | ret int %B |
| 29 | } |
| 30 | |
| Chris Lattner | bcb8138 | 2002-05-06 16:11:31 +0000 | [diff] [blame] | 31 | uint "test5"(uint %A) { |
| 32 | %B = shr uint %A, ubyte 32 ;; shift all bits out |
| 33 | ret uint %B |
| Chris Lattner | 74e9547 | 2002-05-06 05:43:36 +0000 | [diff] [blame] | 34 | } |
| 35 | |
| Chris Lattner | 025e58d | 2002-09-10 23:03:10 +0000 | [diff] [blame^] | 36 | uint %test6(uint %A) { |
| 37 | %B = shl uint %A, ubyte 1 ;; convert to an add instruction |
| 38 | ret uint %B |
| 39 | } |