aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/PowerPC/PPC.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-11-04 05:27:39 +0000
committerChris Lattner <sabre@nondot.org>2006-11-04 05:27:39 +0000
commitaf53a87052f41664ff5962731d0b64e3b51a5501 (patch)
tree8122243d67a0ee81de302cc8713ddaf146271bfb /lib/Target/PowerPC/PPC.h
parentefe9f4a3b69eb2a31f006476996c8ef722345193 (diff)
downloadexternal_llvm-af53a87052f41664ff5962731d0b64e3b51a5501.zip
external_llvm-af53a87052f41664ff5962731d0b64e3b51a5501.tar.gz
external_llvm-af53a87052f41664ff5962731d0b64e3b51a5501.tar.bz2
Go through all kinds of trouble to mark 'blr' as having a predicate operand
that takes a register and condition code. Print these pieces of BLR the right way, even though it is currently set to 'always'. Next up: get the JIT encoding right, then enhance branch folding to produce predicated blr for simple examples. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31449 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC/PPC.h')
-rw-r--r--lib/Target/PowerPC/PPC.h31
1 files changed, 23 insertions, 8 deletions
diff --git a/lib/Target/PowerPC/PPC.h b/lib/Target/PowerPC/PPC.h
index 8fef966..c8ea282 100644
--- a/lib/Target/PowerPC/PPC.h
+++ b/lib/Target/PowerPC/PPC.h
@@ -17,13 +17,31 @@
#include <iosfwd>
-namespace llvm {
-class PPCTargetMachine;
-class FunctionPassManager;
-class FunctionPass;
-class MachineCodeEmitter;
+// GCC #defines PPC on Linux but we use it as our namespace name
+#undef PPC
+namespace llvm {
+ class PPCTargetMachine;
+ class FunctionPassManager;
+ class FunctionPass;
+ class MachineCodeEmitter;
+
+ namespace PPC {
+ /// Predicate - These are "(BO << 5) | BI" for various predicates.
+ enum Predicate {
+ PRED_ALWAYS = (20 << 5) | 0,
+ PRED_LT = (12 << 5) | 0,
+ PRED_LE = ( 4 << 5) | 1,
+ PRED_EQ = (12 << 5) | 2,
+ PRED_GE = ( 4 << 5) | 0,
+ PRED_GT = (12 << 5) | 1,
+ PRED_NE = ( 4 << 5) | 2,
+ PRED_UN = (12 << 5) | 3,
+ PRED_NU = ( 4 << 5) | 3
+ };
+ }
+
FunctionPass *createPPCBranchSelectionPass();
FunctionPass *createPPCISelDag(PPCTargetMachine &TM);
FunctionPass *createPPCAsmPrinterPass(std::ostream &OS,
@@ -34,9 +52,6 @@ void addPPCMachOObjectWriterPass(FunctionPassManager &FPM, std::ostream &o,
PPCTargetMachine &tm);
} // end namespace llvm;
-// GCC #defines PPC on Linux but we use it as our namespace name
-#undef PPC
-
// Defines symbolic names for PowerPC registers. This defines a mapping from
// register name to register number.
//