mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
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:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user