summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorEric Christopher <echristo@apple.com>2011-05-17 07:47:55 +0000
committerEric Christopher <echristo@apple.com>2011-05-17 07:47:55 +0000
commiteb47a2a1e5e28e06063a37d3d81446f7d060b10e (patch)
tree3e3daaec19a8c2ed0b05fa2bed6868208784f016 /llvm/lib
parent1e81f57bf0d3f52c990a54b70b5404e240b1fe89 (diff)
downloadbcm5719-llvm-eb47a2a1e5e28e06063a37d3d81446f7d060b10e.tar.gz
bcm5719-llvm-eb47a2a1e5e28e06063a37d3d81446f7d060b10e.zip
Make this code a little less magic number laden.
llvm-svn: 131456
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelDAGToDAG.cpp42
1 files changed, 30 insertions, 12 deletions
diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
index 8c61bbafe26..b3383c4f939 100644
--- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -1482,6 +1482,24 @@ SDNode *X86DAGToDAGISel::SelectAtomicLoadAdd(SDNode *Node, EVT NVT) {
}
}
+enum AtomicOpc {
+ OR
+};
+
+enum AtomicSz {
+ ConstantI8,
+ I8,
+ SextConstantI16,
+ ConstantI16,
+ I16,
+ SextConstantI32,
+ ConstantI32,
+ I32,
+ SextConstantI64,
+ ConstantI64,
+ I64
+};
+
static const unsigned int AtomicOpcTbl[1][11] = {
{
X86::LOCK_OR8mi,
@@ -1521,42 +1539,42 @@ SDNode *X86DAGToDAGISel::SelectAtomicLoadOr(SDNode *Node, EVT NVT) {
}
// Which index into the table.
- unsigned index = 0;
+ enum AtomicOpc Op = OR;
unsigned Opc = 0;
switch (NVT.getSimpleVT().SimpleTy) {
default: return 0;
case MVT::i8:
if (isCN)
- Opc = AtomicOpcTbl[index][0];
+ Opc = AtomicOpcTbl[Op][ConstantI8];
else
- Opc = AtomicOpcTbl[index][1];
+ Opc = AtomicOpcTbl[Op][I8];
break;
case MVT::i16:
if (isCN) {
if (immSext8(Val.getNode()))
- Opc = AtomicOpcTbl[index][2];
+ Opc = AtomicOpcTbl[Op][SextConstantI16];
else
- Opc = AtomicOpcTbl[index][3];
+ Opc = AtomicOpcTbl[Op][ConstantI16];
} else
- Opc = AtomicOpcTbl[index][4];
+ Opc = AtomicOpcTbl[Op][I16];
break;
case MVT::i32:
if (isCN) {
if (immSext8(Val.getNode()))
- Opc = AtomicOpcTbl[index][5];
+ Opc = AtomicOpcTbl[Op][SextConstantI32];
else
- Opc = AtomicOpcTbl[index][6];
+ Opc = AtomicOpcTbl[Op][ConstantI32];
} else
- Opc = AtomicOpcTbl[index][7];
+ Opc = AtomicOpcTbl[Op][I32];
break;
case MVT::i64:
if (isCN) {
if (immSext8(Val.getNode()))
- Opc = AtomicOpcTbl[index][8];
+ Opc = AtomicOpcTbl[Op][SextConstantI64];
else if (i64immSExt32(Val.getNode()))
- Opc = AtomicOpcTbl[index][9];
+ Opc = AtomicOpcTbl[Op][ConstantI64];
} else
- Opc = AtomicOpcTbl[index][10];
+ Opc = AtomicOpcTbl[Op][I64];
break;
}
OpenPOWER on IntegriCloud