forked from OSchip/llvm-project
[DAG] Add AddressSpace parameter to canMergeStoresTo. NFC.
llvm-svn: 303673
This commit is contained in:
parent
b0360270b5
commit
6c910c0dd8
|
@ -405,7 +405,9 @@ public:
|
|||
}
|
||||
|
||||
/// Returns if it's reasonable to merge stores to MemVT size.
|
||||
virtual bool canMergeStoresTo(EVT MemVT) const { return true; }
|
||||
virtual bool canMergeStoresTo(unsigned AddressSpace, EVT MemVT) const {
|
||||
return true;
|
||||
}
|
||||
|
||||
/// \brief Return true if it is cheap to speculate a call to intrinsic cttz.
|
||||
virtual bool isCheapToSpeculateCttz() const {
|
||||
|
|
|
@ -12616,7 +12616,8 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
|
|||
unsigned SizeInBits = (i + 1) * ElementSizeBytes * 8;
|
||||
EVT StoreTy = EVT::getIntegerVT(Context, SizeInBits);
|
||||
bool IsFast = false;
|
||||
if (TLI.isTypeLegal(StoreTy) && TLI.canMergeStoresTo(StoreTy) &&
|
||||
if (TLI.isTypeLegal(StoreTy) &&
|
||||
TLI.canMergeStoresTo(FirstStoreAS, StoreTy) &&
|
||||
TLI.allowsMemoryAccess(Context, DL, StoreTy, FirstStoreAS,
|
||||
FirstStoreAlign, &IsFast) &&
|
||||
IsFast) {
|
||||
|
@ -12627,7 +12628,7 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
|
|||
EVT LegalizedStoredValueTy =
|
||||
TLI.getTypeToTransformTo(Context, StoredVal.getValueType());
|
||||
if (TLI.isTruncStoreLegal(LegalizedStoredValueTy, StoreTy) &&
|
||||
TLI.canMergeStoresTo(LegalizedStoredValueTy) &&
|
||||
TLI.canMergeStoresTo(FirstStoreAS, LegalizedStoredValueTy) &&
|
||||
TLI.allowsMemoryAccess(Context, DL, LegalizedStoredValueTy,
|
||||
FirstStoreAS, FirstStoreAlign, &IsFast) &&
|
||||
IsFast) {
|
||||
|
@ -12643,7 +12644,7 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
|
|||
!NoVectors) {
|
||||
// Find a legal type for the vector store.
|
||||
EVT Ty = EVT::getVectorVT(Context, MemVT, i + 1);
|
||||
if (TLI.isTypeLegal(Ty) && TLI.canMergeStoresTo(Ty) &&
|
||||
if (TLI.isTypeLegal(Ty) && TLI.canMergeStoresTo(FirstStoreAS, Ty) &&
|
||||
TLI.allowsMemoryAccess(Context, DL, Ty, FirstStoreAS,
|
||||
FirstStoreAlign, &IsFast) &&
|
||||
IsFast)
|
||||
|
@ -12701,7 +12702,7 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
|
|||
EVT Ty =
|
||||
EVT::getVectorVT(*DAG.getContext(), MemVT.getScalarType(), Elts);
|
||||
bool IsFast;
|
||||
if (TLI.isTypeLegal(Ty) && TLI.canMergeStoresTo(Ty) &&
|
||||
if (TLI.isTypeLegal(Ty) && TLI.canMergeStoresTo(FirstStoreAS, Ty) &&
|
||||
TLI.allowsMemoryAccess(Context, DL, Ty, FirstStoreAS,
|
||||
FirstStoreAlign, &IsFast) &&
|
||||
IsFast)
|
||||
|
@ -12810,7 +12811,8 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
|
|||
// Find a legal type for the vector store.
|
||||
EVT StoreTy = EVT::getVectorVT(Context, MemVT, i + 1);
|
||||
bool IsFastSt, IsFastLd;
|
||||
if (TLI.isTypeLegal(StoreTy) && TLI.canMergeStoresTo(StoreTy) &&
|
||||
if (TLI.isTypeLegal(StoreTy) &&
|
||||
TLI.canMergeStoresTo(FirstStoreAS, StoreTy) &&
|
||||
TLI.allowsMemoryAccess(Context, DL, StoreTy, FirstStoreAS,
|
||||
FirstStoreAlign, &IsFastSt) &&
|
||||
IsFastSt &&
|
||||
|
@ -12823,7 +12825,8 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
|
|||
// Find a legal type for the integer store.
|
||||
unsigned SizeInBits = (i + 1) * ElementSizeBytes * 8;
|
||||
StoreTy = EVT::getIntegerVT(Context, SizeInBits);
|
||||
if (TLI.isTypeLegal(StoreTy) && TLI.canMergeStoresTo(StoreTy) &&
|
||||
if (TLI.isTypeLegal(StoreTy) &&
|
||||
TLI.canMergeStoresTo(FirstStoreAS, StoreTy) &&
|
||||
TLI.allowsMemoryAccess(Context, DL, StoreTy, FirstStoreAS,
|
||||
FirstStoreAlign, &IsFastSt) &&
|
||||
IsFastSt &&
|
||||
|
@ -12836,7 +12839,7 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
|
|||
TargetLowering::TypePromoteInteger) {
|
||||
EVT LegalizedStoredValueTy = TLI.getTypeToTransformTo(Context, StoreTy);
|
||||
if (TLI.isTruncStoreLegal(LegalizedStoredValueTy, StoreTy) &&
|
||||
TLI.canMergeStoresTo(LegalizedStoredValueTy) &&
|
||||
TLI.canMergeStoresTo(FirstStoreAS, LegalizedStoredValueTy) &&
|
||||
TLI.isLoadExtLegal(ISD::ZEXTLOAD, LegalizedStoredValueTy,
|
||||
StoreTy) &&
|
||||
TLI.isLoadExtLegal(ISD::SEXTLOAD, LegalizedStoredValueTy,
|
||||
|
|
|
@ -510,7 +510,7 @@ class InstrItineraryData;
|
|||
bool canCombineStoreAndExtract(Type *VectorTy, Value *Idx,
|
||||
unsigned &Cost) const override;
|
||||
|
||||
bool canMergeStoresTo(EVT MemVT) const override {
|
||||
bool canMergeStoresTo(unsigned AddressSpace, EVT MemVT) const override {
|
||||
// Do not merge to larger than i32.
|
||||
return (MemVT.getSizeInBits() <= 32);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue