[TTI] [AArch64] getMemoryOpCost for ptr types
authorSjoerd Meijer <smeijer@nvidia.com>
Fri, 16 Dec 2022 09:20:37 +0000 (09:20 +0000)
committerSjoerd Meijer <smeijer@nvidia.com>
Fri, 16 Dec 2022 15:38:17 +0000 (15:38 +0000)
commit5c94faba0bba628aaa5c1f034ef04acd40f7adb2
treed2fa7a259e1933bca837718c785aa8fe12e6dc06
parent2e5fe721724446265d1ea48267b6a34d33fca14b
[TTI] [AArch64] getMemoryOpCost for ptr types

Opaque ptr types have a size in bits of 0. The legalised type is an i64 or
vector of i64s, which do have a size. Because of this difference in size, target
hook getMemoryOpCost modelled stores of ptr types as extending/truncating
load/stores. Now we just check for opaque ptr types and return the legalised
cost. This makes stores of pointers cheaper, and as a result we now SLP
vectorise the changed test case.

Differential Revision: https://reviews.llvm.org/D140193
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
llvm/test/Analysis/CostModel/AArch64/store-ptr.ll
llvm/test/Transforms/SLPVectorizer/AArch64/store-ptr.ll