summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2013-07-23 23:55:03 +0000
committerTom Stellard <thomas.stellard@amd.com>2013-07-23 23:55:03 +0000
commitc54731aa9d527f3a39148e4fbf6b99b89d1aef7c (patch)
tree7aedb404e313eff68880f14970adbdd51acc2e42 /llvm/lib/CodeGen
parent8cb0e47c9ee2061cedb06bbb648e1d5c2efea82e (diff)
downloadbcm5719-llvm-c54731aa9d527f3a39148e4fbf6b99b89d1aef7c.tar.gz
bcm5719-llvm-c54731aa9d527f3a39148e4fbf6b99b89d1aef7c.zip
DAGCombiner: Pass the correct type to TargetLowering::isF(Abs|Neg)Free
This commit also implements these functions for R600 and removes a test case that was relying on the buggy behavior. llvm-svn: 187007
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index 111803fd5b5..ac4eeaf0559 100644
--- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -5680,8 +5680,8 @@ SDValue DAGCombiner::visitBITCAST(SDNode *N) {
// fold (bitconvert (fneg x)) -> (xor (bitconvert x), signbit)
// fold (bitconvert (fabs x)) -> (and (bitconvert x), (not signbit))
// This often reduces constant pool loads.
- if (((N0.getOpcode() == ISD::FNEG && !TLI.isFNegFree(VT)) ||
- (N0.getOpcode() == ISD::FABS && !TLI.isFAbsFree(VT))) &&
+ if (((N0.getOpcode() == ISD::FNEG && !TLI.isFNegFree(N0.getValueType())) ||
+ (N0.getOpcode() == ISD::FABS && !TLI.isFAbsFree(N0.getValueType()))) &&
N0.getNode()->hasOneUse() && VT.isInteger() &&
!VT.isVector() && !N0.getValueType().isVector()) {
SDValue NewConv = DAG.getNode(ISD::BITCAST, SDLoc(N0), VT,
OpenPOWER on IntegriCloud