Add all arithmetic operators to ConstantExprToString().

Note that some generated operators (like &, | or ^) may
not be supported by the assembler -- but if they've got
this far, it's better to generate them and let the assembler decide.

llvm-svn: 7476
This commit is contained in:
Vikram S. Adve 2003-08-01 15:55:53 +00:00
parent 16c2b62d13
commit 89f9397668
1 changed files with 40 additions and 0 deletions

View File

@ -213,6 +213,46 @@ public:
+ valToExprString(CE->getOperand(1), target) + ")";
break;
case Instruction::Sub:
S += "(" + valToExprString(CE->getOperand(0), target) + ") - ("
+ valToExprString(CE->getOperand(1), target) + ")";
break;
case Instruction::Mul:
S += "(" + valToExprString(CE->getOperand(0), target) + ") * ("
+ valToExprString(CE->getOperand(1), target) + ")";
break;
case Instruction::Div:
S += "(" + valToExprString(CE->getOperand(0), target) + ") / ("
+ valToExprString(CE->getOperand(1), target) + ")";
break;
case Instruction::Rem:
S += "(" + valToExprString(CE->getOperand(0), target) + ") % ("
+ valToExprString(CE->getOperand(1), target) + ")";
break;
case Instruction::And:
// Logical && for booleans; bitwise & otherwise
S += "(" + valToExprString(CE->getOperand(0), target)
+ ((CE->getType() == Type::BoolTy)? ") && (" : ") & (")
+ valToExprString(CE->getOperand(1), target) + ")";
break;
case Instruction::Or:
// Logical || for booleans; bitwise | otherwise
S += "(" + valToExprString(CE->getOperand(0), target)
+ ((CE->getType() == Type::BoolTy)? ") || (" : ") | (")
+ valToExprString(CE->getOperand(1), target) + ")";
break;
case Instruction::Xor:
// Bitwise ^ for all types
S += "(" + valToExprString(CE->getOperand(0), target) + ") ^ ("
+ valToExprString(CE->getOperand(1), target) + ")";
break;
default:
assert(0 && "Unsupported operator in ConstantExprToString()");
break;