[GlobalISel][X86] Support G_BRCOND operation.

Summary: Support G_BRCOND operation. For now don't try to fold cmp/trunc instructions.

Reviewers: zvi, guyblank

Reviewed By: guyblank

Subscribers: rovka, llvm-commits, kristof.beyls

Differential Revision: https://reviews.llvm.org/D34754

llvm-svn: 311327
diff --git a/llvm/lib/Target/X86/X86LegalizerInfo.cpp b/llvm/lib/Target/X86/X86LegalizerInfo.cpp
index b107599..05fde0f 100644
--- a/llvm/lib/Target/X86/X86LegalizerInfo.cpp
+++ b/llvm/lib/Target/X86/X86LegalizerInfo.cpp
@@ -80,6 +80,9 @@
   for (auto Ty : {s1, s8, s16})
     setAction({G_GEP, 1, Ty}, WidenScalar);
 
+  // Control-flow
+  setAction({G_BRCOND, s1}, Legal);
+
   // Constants
   for (auto Ty : {s8, s16, s32, p0})
     setAction({TargetOpcode::G_CONSTANT, Ty}, Legal);
@@ -141,6 +144,9 @@
   for (auto Ty : {s1, s8, s16})
     setAction({G_GEP, 1, Ty}, WidenScalar);
 
+  // Control-flow
+  setAction({G_BRCOND, s1}, Legal);
+
   // Constants
   for (auto Ty : {s8, s16, s32, s64, p0})
     setAction({TargetOpcode::G_CONSTANT, Ty}, Legal);