Add test for demorgans law with constants
[oota-llvm.git] / test / Transforms / InstCombine / not.ll
index 8bc858664999f3ddd0a1c88acccbe1ac9bdcbe5f..24d8f69a4b2dbb476987bec9471a2a66dc1aaf89 100644 (file)
@@ -19,3 +19,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
+}