Unary Not (boolean and bitwise) is no longer a separate LLVM instruction

but is instead implemented with XOR.  Note that the InstrForest opLabels
for Not and BNot remain the same, i.e., the XOR is recognized and
represented as a (boolean or bitwise) Not when building the instruction
trees.  But these tree nodes are now binary, not unary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3343 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Vikram S. Adve 2002-08-15 14:19:22 +00:00
parent ce08e1dd3e
commit 85af131d9e
2 changed files with 14 additions and 4 deletions

View File

@ -73,10 +73,15 @@ InstructionNode::InstructionNode(Instruction* I)
{
opLabel = opLabel + 100; // load/getElem with index vector
}
else if (opLabel == Instruction::Xor &&
BinaryOperator::isNot(I))
{
opLabel = (I->getType() == Type::BoolTy)? NotOp // boolean Not operator
: BNotOp; // bitwise Not operator
}
else if (opLabel == Instruction::And ||
opLabel == Instruction::Or ||
opLabel == Instruction::Xor ||
opLabel == Instruction::Not)
opLabel == Instruction::Xor)
{
// Distinguish bitwise operators from logical operators!
if (I->getType() != Type::BoolTy)

View File

@ -73,10 +73,15 @@ InstructionNode::InstructionNode(Instruction* I)
{
opLabel = opLabel + 100; // load/getElem with index vector
}
else if (opLabel == Instruction::Xor &&
BinaryOperator::isNot(I))
{
opLabel = (I->getType() == Type::BoolTy)? NotOp // boolean Not operator
: BNotOp; // bitwise Not operator
}
else if (opLabel == Instruction::And ||
opLabel == Instruction::Or ||
opLabel == Instruction::Xor ||
opLabel == Instruction::Not)
opLabel == Instruction::Xor)
{
// Distinguish bitwise operators from logical operators!
if (I->getType() != Type::BoolTy)