forked from OSchip/llvm-project
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:
parent
16c2b62d13
commit
89f9397668
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue