ADd support for select instructions
authorChris Lattner <sabre@nondot.org>
Fri, 12 Mar 2004 05:52:14 +0000 (05:52 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 12 Mar 2004 05:52:14 +0000 (05:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12316 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/CBackend/CBackend.cpp
lib/Target/CBackend/Writer.cpp

index 396cc694da6ed06ec038bf713989521b4d970cc9..e78eef66831e7c70c55ffaf80341036ef79c29c1 100644 (file)
@@ -140,6 +140,7 @@ namespace {
     void visitBinaryOperator(Instruction &I);
 
     void visitCastInst (CastInst &I);
+    void visitSelectInst(SelectInst &I);
     void visitCallInst (CallInst &I);
     void visitCallSite (CallSite CS);
     void visitShiftInst(ShiftInst &I) { visitBinaryOperator(I); }
@@ -1185,6 +1186,17 @@ void CWriter::visitCastInst(CastInst &I) {
   writeOperand(I.getOperand(0));
 }
 
+void CWriter::visitSelectInst(SelectInst &I) {
+  Out << "((";
+  writeOperand(I.getCondition());
+  Out << ") ? (";
+  writeOperand(I.getTrueValue());
+  Out << ") : (";
+  writeOperand(I.getFalseValue());
+  Out << "))";    
+}
+
+
 void CWriter::lowerIntrinsics(Module &M) {
   for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F)
     for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB)
index 396cc694da6ed06ec038bf713989521b4d970cc9..e78eef66831e7c70c55ffaf80341036ef79c29c1 100644 (file)
@@ -140,6 +140,7 @@ namespace {
     void visitBinaryOperator(Instruction &I);
 
     void visitCastInst (CastInst &I);
+    void visitSelectInst(SelectInst &I);
     void visitCallInst (CallInst &I);
     void visitCallSite (CallSite CS);
     void visitShiftInst(ShiftInst &I) { visitBinaryOperator(I); }
@@ -1185,6 +1186,17 @@ void CWriter::visitCastInst(CastInst &I) {
   writeOperand(I.getOperand(0));
 }
 
+void CWriter::visitSelectInst(SelectInst &I) {
+  Out << "((";
+  writeOperand(I.getCondition());
+  Out << ") ? (";
+  writeOperand(I.getTrueValue());
+  Out << ") : (";
+  writeOperand(I.getFalseValue());
+  Out << "))";    
+}
+
+
 void CWriter::lowerIntrinsics(Module &M) {
   for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F)
     for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB)