diff options
| author | Eric Christopher <echristo@apple.com> | 2011-05-17 07:47:55 +0000 |
|---|---|---|
| committer | Eric Christopher <echristo@apple.com> | 2011-05-17 07:47:55 +0000 |
| commit | eb47a2a1e5e28e06063a37d3d81446f7d060b10e (patch) | |
| tree | 3e3daaec19a8c2ed0b05fa2bed6868208784f016 /llvm/lib | |
| parent | 1e81f57bf0d3f52c990a54b70b5404e240b1fe89 (diff) | |
| download | bcm5719-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.cpp | 42 |
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; } |

