Dan Gohman | 72a13d2 | 2009-09-08 22:34:10 +0000 | [diff] [blame^] | 1 | ; RUN: opt < %s -instcombine -S | grep xor | count 4 |
| 2 | ; RUN: opt < %s -instcombine -S | not grep and |
| 3 | ; RUN: opt < %s -instcombine -S | not grep { or} |
Chris Lattner | a8de4cc | 2007-06-15 05:57:20 +0000 | [diff] [blame] | 4 | |
| 5 | ; PR1510 |
| 6 | |
| 7 | ; These are all equivelent to A^B |
| 8 | |
| 9 | define i32 @test1(i32 %a, i32 %b) { |
| 10 | entry: |
| 11 | %tmp3 = or i32 %b, %a ; <i32> [#uses=1] |
| 12 | %tmp3not = xor i32 %tmp3, -1 ; <i32> [#uses=1] |
| 13 | %tmp6 = and i32 %b, %a ; <i32> [#uses=1] |
| 14 | %tmp7 = or i32 %tmp6, %tmp3not ; <i32> [#uses=1] |
| 15 | %tmp7not = xor i32 %tmp7, -1 ; <i32> [#uses=1] |
| 16 | ret i32 %tmp7not |
| 17 | } |
| 18 | |
| 19 | define i32 @test2(i32 %a, i32 %b) { |
| 20 | entry: |
| 21 | %tmp3 = or i32 %b, %a ; <i32> [#uses=1] |
| 22 | %tmp6 = and i32 %b, %a ; <i32> [#uses=1] |
| 23 | %tmp6not = xor i32 %tmp6, -1 ; <i32> [#uses=1] |
| 24 | %tmp7 = and i32 %tmp3, %tmp6not ; <i32> [#uses=1] |
| 25 | ret i32 %tmp7 |
| 26 | } |
| 27 | |
Chris Lattner | 9923af4 | 2007-06-15 06:22:32 +0000 | [diff] [blame] | 28 | define <4 x i32> @test3(<4 x i32> %a, <4 x i32> %b) { |
| 29 | entry: |
| 30 | %tmp3 = or <4 x i32> %a, %b ; <<4 x i32>> [#uses=1] |
| 31 | %tmp3not = xor <4 x i32> %tmp3, < i32 -1, i32 -1, i32 -1, i32 -1 > ; <<4 x i32>> [#uses=1] |
| 32 | %tmp6 = and <4 x i32> %a, %b ; <<4 x i32>> [#uses=1] |
| 33 | %tmp7 = or <4 x i32> %tmp6, %tmp3not ; <<4 x i32>> [#uses=1] |
| 34 | %tmp7not = xor <4 x i32> %tmp7, < i32 -1, i32 -1, i32 -1, i32 -1 > ; <<4 x i32>> [#uses=1] |
| 35 | ret <4 x i32> %tmp7not |
| 36 | } |
| 37 | |
| 38 | define <4 x i32> @test4(<4 x i32> %a, <4 x i32> %b) { |
| 39 | entry: |
| 40 | %tmp3 = or <4 x i32> %a, %b ; <<4 x i32>> [#uses=1] |
| 41 | %tmp6 = and <4 x i32> %a, %b ; <<4 x i32>> [#uses=1] |
| 42 | %tmp6not = xor <4 x i32> %tmp6, < i32 -1, i32 -1, i32 -1, i32 -1 > ; <<4 x i32>> [#uses=1] |
| 43 | %tmp7 = and <4 x i32> %tmp3, %tmp6not ; <<4 x i32>> [#uses=1] |
| 44 | ret <4 x i32> %tmp7 |
| 45 | } |
| 46 | |