diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2007-10-12 07:55:53 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2007-10-12 07:55:53 +0000 |
| commit | f8c23f074bd79cfa2225c9ae4197a10fc9499402 (patch) | |
| tree | 16eba0c334a5d42b5ad9e1e458b9770c5126492b /llvm/lib/Target | |
| parent | 9653e677d5061d23421197d473b1a25860449fb6 (diff) | |
| download | bcm5719-llvm-f8c23f074bd79cfa2225c9ae4197a10fc9499402.tar.gz bcm5719-llvm-f8c23f074bd79cfa2225c9ae4197a10fc9499402.zip | |
Flag MOV32to32_ with EXTRACT_SUBREG. They should not be scheduled apart.
llvm-svn: 42894
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelDAGToDAG.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp index c6d3e6cdd71..853ac114dfe 100644 --- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -1000,8 +1000,9 @@ SDNode *X86DAGToDAGISel::getTruncate(SDOperand N0, MVT::ValueType VT) { VT = MVT::i32; break; } - N0 = - SDOperand(CurDAG->getTargetNode(Opc, VT, N0), 0); + N0 = SDOperand(CurDAG->getTargetNode(Opc, VT, MVT::Flag, N0), 0); + return CurDAG->getTargetNode(X86::EXTRACT_SUBREG, + VT, N0, SRIdx, N0.getValue(1)); } break; case MVT::i16: @@ -1010,11 +1011,9 @@ SDNode *X86DAGToDAGISel::getTruncate(SDOperand N0, MVT::ValueType VT) { case MVT::i32: SRIdx = CurDAG->getTargetConstant(3, MVT::i32); // SubRegSet 3 break; - default: assert(0 && "Unknown truncate!"); + default: assert(0 && "Unknown truncate!"); break; } - return CurDAG->getTargetNode(X86::EXTRACT_SUBREG, - VT, - N0, SRIdx); + return CurDAG->getTargetNode(X86::EXTRACT_SUBREG, VT, N0, SRIdx); } @@ -1382,7 +1381,8 @@ SDNode *X86DAGToDAGISel::Select(SDOperand N) { default: assert(0 && "Unknown any_extend!"); } if (SRIdx.Val) { - SDNode *ResNode = CurDAG->getTargetNode(X86::INSERT_SUBREG, NVT, N0, SRIdx); + SDNode *ResNode = CurDAG->getTargetNode(X86::INSERT_SUBREG, + NVT, N0, SRIdx); #ifndef NDEBUG DOUT << std::string(Indent-2, ' ') << "=> "; |

