aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-05-05 06:32:04 +0000
committerChris Lattner <sabre@nondot.org>2006-05-05 06:32:04 +0000
commit0d8dae749c116a4168c3b4312f1bc0352d22c9db (patch)
tree5bad46ef6fcb742492d09f86899dc3951d3d7a90 /lib
parent540121f1ec6495445aab87ff464b170c0b762d05 (diff)
downloadexternal_llvm-0d8dae749c116a4168c3b4312f1bc0352d22c9db.zip
external_llvm-0d8dae749c116a4168c3b4312f1bc0352d22c9db.tar.gz
external_llvm-0d8dae749c116a4168c3b4312f1bc0352d22c9db.tar.bz2
Fold some common code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28124 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/CodeGen/SelectionDAG/DAGCombiner.cpp16
1 files changed, 2 insertions, 14 deletions
diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index 3294b4c..a14a076 100644
--- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -1049,8 +1049,9 @@ SDOperand DAGCombiner::SimplifyBinOpWithSameOpcodeHands(SDNode *N) {
// fold (OP (zext x), (zext y)) -> (zext (OP x, y))
// fold (OP (sext x), (sext y)) -> (sext (OP x, y))
// fold (OP (aext x), (aext y)) -> (aext (OP x, y))
+ // fold (OP (trunc x), (trunc y)) -> (trunc (OP x, y))
if ((N0.getOpcode() == ISD::ZERO_EXTEND || N0.getOpcode() == ISD::ANY_EXTEND||
- N0.getOpcode() == ISD::SIGN_EXTEND) &&
+ N0.getOpcode() == ISD::SIGN_EXTEND || N0.getOpcode() == ISD::TRUNCATE) &&
N0.getOperand(0).getValueType() == N1.getOperand(0).getValueType()) {
SDOperand ORNode = DAG.getNode(N->getOpcode(),
N0.getOperand(0).getValueType(),
@@ -1059,19 +1060,6 @@ SDOperand DAGCombiner::SimplifyBinOpWithSameOpcodeHands(SDNode *N) {
return DAG.getNode(N0.getOpcode(), VT, ORNode);
}
- // fold (and (trunc x), (trunc y)) -> (trunc (and x, y))
- // fold (or (trunc x), (trunc y)) -> (trunc (or x, y))
- // fold (xor (trunc x), (trunc y)) -> (trunc (xor x, y))
- if (N0.getOpcode() == ISD::TRUNCATE &&
- N0.getOperand(0).getValueType() == N1.getOperand(0).getValueType()) {
- SDOperand ORNode = DAG.getNode(N->getOpcode(),
- N0.getOperand(0).getValueType(),
- N0.getOperand(0), N1.getOperand(0));
- AddToWorkList(ORNode.Val);
- return DAG.getNode(ISD::TRUNCATE, VT, ORNode);
- }
-
-
// For each of OP in SHL/SRL/SRA/AND...
// fold (and (OP x, z), (OP y, z)) -> (OP (and x, y), z)
// fold (or (OP x, z), (OP y, z)) -> (OP (or x, y), z)