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 and |
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 | |||||
Chris Lattner | 2deaf77 | 2003-02-18 18:06:44 +0000 | [diff] [blame] | 11 | int %test1(int %A) { |
Chris Lattner | 74e9547 | 2002-05-06 05:43:36 +0000 | [diff] [blame] | 12 | %B = and int %A, 0 ; zero result |
13 | ret int %B | ||||
14 | } | ||||
15 | |||||
Chris Lattner | 2deaf77 | 2003-02-18 18:06:44 +0000 | [diff] [blame] | 16 | int %test2(int %A) { |
Chris Lattner | 74e9547 | 2002-05-06 05:43:36 +0000 | [diff] [blame] | 17 | %B = and int %A, -1 ; noop |
18 | ret int %B | ||||
19 | } | ||||
20 | |||||
Chris Lattner | 2deaf77 | 2003-02-18 18:06:44 +0000 | [diff] [blame] | 21 | bool %test3(bool %A) { |
Chris Lattner | 74e9547 | 2002-05-06 05:43:36 +0000 | [diff] [blame] | 22 | %B = and bool %A, false ; always = false |
23 | ret bool %B | ||||
24 | } | ||||
25 | |||||
Chris Lattner | 2deaf77 | 2003-02-18 18:06:44 +0000 | [diff] [blame] | 26 | bool %test4(bool %A) { |
Chris Lattner | 74e9547 | 2002-05-06 05:43:36 +0000 | [diff] [blame] | 27 | %B = and bool %A, true ; noop |
28 | ret bool %B | ||||
29 | } | ||||
30 | |||||
Chris Lattner | 2deaf77 | 2003-02-18 18:06:44 +0000 | [diff] [blame] | 31 | int %test5(int %A) { |
Chris Lattner | 6022ad0 | 2002-05-06 05:51:26 +0000 | [diff] [blame] | 32 | %B = and int %A, %A |
33 | ret int %B | ||||
34 | } | ||||
35 | |||||
Chris Lattner | 2deaf77 | 2003-02-18 18:06:44 +0000 | [diff] [blame] | 36 | bool %test6(bool %A) { |
Chris Lattner | 6022ad0 | 2002-05-06 05:51:26 +0000 | [diff] [blame] | 37 | %B = and bool %A, %A |
38 | ret bool %B | ||||
39 | } | ||||
Chris Lattner | 74e9547 | 2002-05-06 05:43:36 +0000 | [diff] [blame] | 40 | |
Chris Lattner | c5fccf3 | 2003-02-18 19:28:47 +0000 | [diff] [blame^] | 41 | int %test7(int %A) { ; A & ~A == 0 |
42 | %NotA = xor int %A, -1 | ||||
43 | %B = and int %A, %NotA | ||||
44 | ret int %B | ||||
45 | } |