From 9f24a077bda36334e6f7c8f27a97eccd820e9644 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 12 Mar 2004 05:52:14 +0000 Subject: [PATCH] ADd support for select instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12316 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/CBackend/CBackend.cpp | 12 ++++++++++++ lib/Target/CBackend/Writer.cpp | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp index 396cc694da6..e78eef66831 100644 --- a/lib/Target/CBackend/CBackend.cpp +++ b/lib/Target/CBackend/CBackend.cpp @@ -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) diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp index 396cc694da6..e78eef66831 100644 --- a/lib/Target/CBackend/Writer.cpp +++ b/lib/Target/CBackend/Writer.cpp @@ -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) -- 2.11.0