[PATCH] D49342: [LSV] Refactoring + supporting bitcasts to a type of different size

Roman Tereshin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 16 14:55:35 PDT 2018


rtereshin added inline comments.


================
Comment at: lib/Transforms/Vectorize/LoadStoreVectorizer.cpp:339
+
+bool Vectorizer::tryHarder(Value *PtrA, Value *PtrB, APInt PtrDelta) {
+  auto *GEPA = dyn_cast<GetElementPtrInst>(PtrA);
----------------
arsenm wrote:
> Needs better name
Any suggestions?


================
Comment at: test/Transforms/LoadStoreVectorizer/AMDGPU/gep-bitcast.ll:62
 define void @vect_zext_bitcast_i8_st4_to_i32_idx(i8 addrspace(1)* %arg1, i32 %base) {
-  %add1 = add nuw i32 %base, 0
+  %add1 = add i32 %base, 0
   %zext1 = zext i32 %add1 to i64
----------------
arsenm wrote:
> Why was the new dropped here?
We don't need to know that `add i32 %base, C0` doesn't wrap if we know that `add n[su]w i32 %base, C1` doesn't wrap and `0 <= C0 <= C1`. `Vectorizer::isConsecutiveAccess` is able to notice and exploit this fact in some cases (w/ and w/o this patch). I don't want to regress on it. Perhaps it's better if we also change the offsets in this test from 0, 4, 8, 12 to something non-zero based, like 4, 8, 12, 16.


Repository:
  rL LLVM

https://reviews.llvm.org/D49342





More information about the llvm-commits mailing list