summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
diff options
context:
space:
mode:
authorStanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>2018-10-31 21:24:30 +0000
committerStanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>2018-10-31 21:24:30 +0000
commit222e9c11f7c9bfba5a5a442d2f54d74fda96f78a (patch)
treee3b5efba9f3ced2ae67f8fc9a104a64cde34fa39 /llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
parent03da6e6a623019916f3fd03b31cb19e6969db21f (diff)
downloadbcm5719-llvm-222e9c11f7c9bfba5a5a442d2f54d74fda96f78a.tar.gz
bcm5719-llvm-222e9c11f7c9bfba5a5a442d2f54d74fda96f78a.zip
Check shouldReduceLoadWidth from SimplifySetCC
SimplifySetCC could shrink a load without checking for profitability or legality of such shink with a target. Added checks to prevent shrinking of aligned scalar loads in AMDGPU below dword as scalar engine does not support it. Differential Revision: https://reviews.llvm.org/D53846 llvm-svn: 345778
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
index a356e4d728f..d5665ab67c5 100644
--- a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
@@ -2284,7 +2284,8 @@ SDValue TargetLowering::SimplifySetCC(EVT VT, SDValue N0, SDValue N1,
}
if (bestWidth) {
EVT newVT = EVT::getIntegerVT(*DAG.getContext(), bestWidth);
- if (newVT.isRound()) {
+ if (newVT.isRound() &&
+ shouldReduceLoadWidth(Lod, ISD::NON_EXTLOAD, newVT)) {
EVT PtrType = Lod->getOperand(1).getValueType();
SDValue Ptr = Lod->getBasePtr();
if (bestOffset != 0)
OpenPOWER on IntegriCloud