summaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/MachineInstr.h
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-08-16 23:11:47 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-08-16 23:11:47 +0000
commitf2c64ef519b38a4328809b27b4a3a8e0c26e9709 (patch)
treece3233b4960acdefe47ab3644925c8196a84e3c3 /include/llvm/CodeGen/MachineInstr.h
parent05b2bc8781d9af403a257599613e12cb8fef19e8 (diff)
downloadllvm-f2c64ef519b38a4328809b27b4a3a8e0c26e9709.tar.gz
llvm-f2c64ef519b38a4328809b27b4a3a8e0c26e9709.tar.bz2
llvm-f2c64ef519b38a4328809b27b4a3a8e0c26e9709.tar.xz
Add an MCID::Select flag and TII hooks for optimizing selects.
Select instructions pick one of two virtual registers based on a condition, like x86 cmov. On targets like ARM that support predication, selects can sometimes be eliminated by predicating the instruction defining one of the operands. Teach PeepholeOptimizer to recognize select instructions, and ask the target to optimize them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162059 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/MachineInstr.h')
-rw-r--r--include/llvm/CodeGen/MachineInstr.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/MachineInstr.h b/include/llvm/CodeGen/MachineInstr.h
index 4c5eb8b36f..27756abf3f 100644
--- a/include/llvm/CodeGen/MachineInstr.h
+++ b/include/llvm/CodeGen/MachineInstr.h
@@ -420,6 +420,12 @@ public:
return hasProperty(MCID::Bitcast, Type);
}
+ /// isSelect - Return true if this instruction is a select instruction.
+ ///
+ bool isSelect(QueryType Type = IgnoreBundle) const {
+ return hasProperty(MCID::Select, Type);
+ }
+
/// isNotDuplicable - Return true if this instruction cannot be safely
/// duplicated. For example, if the instruction has a unique labels attached
/// to it, duplicating it would cause multiple definition errors.