diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp
index 16607bd..0ae4ecf 100644
--- a/lib/Transforms/Scalar/InstructionCombining.cpp
+++ b/lib/Transforms/Scalar/InstructionCombining.cpp
@@ -4366,27 +4366,6 @@
       if (match(B, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
         return SelectInst::Create(C1, C, D);
     }
-    if (match(B, SELECT_MATCH(C0, -1, 0))) {
-      Value *C1 = 0;
-      if (match(C, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
-        return SelectInst::Create(C1, A, D);
-      if (match(A, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
-        return SelectInst::Create(C1, C, D);
-    }
-    if (match(C, SELECT_MATCH(C0, -1, 0))) {
-      Value *C1 = 0;
-      if (match(D, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
-        return SelectInst::Create(C1, A, B);
-      if (match(B, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
-        return SelectInst::Create(C1, A, D);
-    }
-    if (match(D, SELECT_MATCH(C0, -1, 0))) {
-      Value *C1 = 0;
-      if (match(C, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
-        return SelectInst::Create(C1, A, B);
-      if (match(A, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
-        return SelectInst::Create(C1, C, B);
-    }
     if (match(A, SELECT_MATCH(C0, 0, -1))) {
       Value *C1 = 0;
       if (match(D, m_Not(SELECT_MATCH(C1, 0, -1))) && C1 == C0)
@@ -4394,6 +4373,13 @@
       if (match(B, m_Not(SELECT_MATCH(C1, 0, -1))) && C1 == C0)
         return SelectInst::Create(C1, D, C);
     }
+    if (match(B, SELECT_MATCH(C0, -1, 0))) {
+      Value *C1 = 0;
+      if (match(C, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
+        return SelectInst::Create(C1, A, D);
+      if (match(A, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
+        return SelectInst::Create(C1, C, D);
+    }
     if (match(B, SELECT_MATCH(C0, 0, -1))) {
       Value *C1 = 0;
       if (match(C, m_Not(SELECT_MATCH(C1, 0, -1))) && C1 == C0)
@@ -4401,6 +4387,13 @@
       if (match(A, m_Not(SELECT_MATCH(C1, 0, -1))) && C1 == C0)
         return SelectInst::Create(C1, D, C);
     }
+    if (match(C, SELECT_MATCH(C0, -1, 0))) {
+      Value *C1 = 0;
+      if (match(D, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
+        return SelectInst::Create(C1, A, B);
+      if (match(B, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
+        return SelectInst::Create(C1, A, D);
+    }
     if (match(C, SELECT_MATCH(C0, 0, -1))) {
       Value *C1 = 0;
       if (match(D, m_Not(SELECT_MATCH(C1, 0, -1))) && C1 == C0)
@@ -4408,6 +4401,13 @@
       if (match(B, m_Not(SELECT_MATCH(C1, 0, -1))) && C1 == C0)
         return SelectInst::Create(C1, D, A);
     }
+    if (match(D, SELECT_MATCH(C0, -1, 0))) {
+      Value *C1 = 0;
+      if (match(C, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
+        return SelectInst::Create(C1, A, B);
+      if (match(A, m_Not(SELECT_MATCH(C1, -1, 0))) && C1 == C0)
+        return SelectInst::Create(C1, C, B);
+    }
     if (match(D, SELECT_MATCH(C0, 0, -1))) {
       Value *C1 = 0;
       if (match(C, m_Not(SELECT_MATCH(C1, 0, -1))) && C1 == C0)
