- Add "Bitcast" target instruction property for instructions which perform

nothing more than a bitcast.
- Teach tablegen to automatically infer "Bitcast" property.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127667 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng
2011-03-15 05:09:26 +00:00
parent b1a6eab655
commit 0f040a258f
6 changed files with 48 additions and 9 deletions

View File

@@ -200,6 +200,7 @@ class Instruction {
bit isIndirectBranch = 0; // Is this instruction an indirect branch?
bit isCompare = 0; // Is this instruction a comparison instruction?
bit isMoveImm = 0; // Is this instruction a move immediate instruction?
bit isBitcast = 0; // Is this instruction a bitcast instruction?
bit isBarrier = 0; // Can control flow fall through this instruction?
bit isCall = 0; // Is this instruction a call instruction?
bit canFoldAsLoad = 0; // Can this be folded as a simple memory operand?

View File

@@ -105,6 +105,7 @@ namespace TID {
IndirectBranch,
Compare,
MoveImm,
Bitcast,
DelaySlot,
FoldableAsLoad,
MayLoad,
@@ -358,6 +359,12 @@ public:
bool isMoveImmediate() const {
return Flags & (1 << TID::MoveImm);
}
/// isBitcast - Return true if this instruction is a bitcast instruction.
///
bool isBitcast() const {
return Flags & (1 << TID::Bitcast);
}
/// isNotDuplicable - Return true if this instruction cannot be safely
/// duplicated. For example, if the instruction has a unique labels attached