Fix InstCombine/2007-10-31-StringCrash.ll by removing an obvious
[oota-llvm.git] / test / Transforms / InstCombine / not.ll
index 8bc858664999f3ddd0a1c88acccbe1ac9bdcbe5f..3e85692500e94a09013d19778ab31bf08f7a7767 100644 (file)
@@ -1,10 +1,7 @@
 ; This test makes sure that these instructions are properly eliminated.
 ;
 
-; RUN: if as < %s | opt -instcombine -die | dis | grep xor
-; RUN: then exit 1
-; RUN: else exit 0
-; RUN: fi
+; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep xor
 
 implementation
 
@@ -19,3 +16,30 @@ bool %test2(int %A, int %B) {
        %Ret = xor bool %cond, true
        ret bool %Ret
 }
+
+
+; Test that demorgans law can be instcombined
+int %test3(int %A, int %B) {
+       %a = xor int %A, -1
+       %b = xor int %B, -1
+       %c = and int %a, %b
+       %d = xor int %c, -1
+       ret int %d
+}
+
+; Test that demorgens law can work with constants
+int %test4(int %A, int %B) {
+       %a = xor int %A, -1
+       %c = and int %a, 5    ; 5 = ~c2
+       %d = xor int %c, -1
+       ret int %d
+}
+
+; test the mirror of demorgans law...
+int %test5(int %A, int %B) {
+       %a = xor int %A, -1
+       %b = xor int %B, -1
+       %c = or int %a, %b
+       %d = xor int %c, -1
+       ret int %d
+}