fix a globalopt crash on two Adobe-C++ testcases that the recent
[llvm.git] / test / Transforms / InstSimplify / 2010-12-20-Reassociate.ll
blob87dfdda910b26e94f21f95dde96e927b241d017c
1 ; RUN: opt < %s -instsimplify -S | FileCheck %s
3 define i32 @add1(i32 %x) {
4 ; CHECK: @add1
5 ; (X + -1) + 1 -> X
6   %l = add i32 %x, -1
7   %r = add i32 %l, 1
8   ret i32 %r
9 ; CHECK: ret i32 %x
12 define i32 @and1(i32 %x, i32 %y) {
13 ; CHECK: @and1
14 ; (X & Y) & X -> X & Y
15   %l = and i32 %x, %y
16   %r = and i32 %l, %x
17   ret i32 %r
18 ; CHECK: ret i32 %l
21 define i32 @and2(i32 %x, i32 %y) {
22 ; CHECK: @and2
23 ; X & (X & Y) -> X & Y
24   %r = and i32 %x, %y
25   %l = and i32 %x, %r
26   ret i32 %l
27 ; CHECK: ret i32 %r
30 define i32 @or1(i32 %x, i32 %y) {
31 ; CHECK: @or1
32 ; (X | Y) | X -> X | Y
33   %l = or i32 %x, %y
34   %r = or i32 %l, %x
35   ret i32 %r
36 ; CHECK: ret i32 %l
39 define i32 @or2(i32 %x, i32 %y) {
40 ; CHECK: @or2
41 ; X | (X | Y) -> X | Y
42   %r = or i32 %x, %y
43   %l = or i32 %x, %r
44   ret i32 %l
45 ; CHECK: ret i32 %r
48 define i32 @xor1(i32 %x, i32 %y) {
49 ; CHECK: @xor1
50 ; (X ^ Y) ^ X = Y
51   %l = xor i32 %x, %y
52   %r = xor i32 %l, %x
53   ret i32 %r
54 ; CHECK: ret i32 %y
57 define i32 @xor2(i32 %x, i32 %y) {
58 ; CHECK: @xor2
59 ; X ^ (X ^ Y) = Y
60   %r = xor i32 %x, %y
61   %l = xor i32 %x, %r
62   ret i32 %l
63 ; CHECK: ret i32 %y