[PATCH] D32101: Skip bitcasts while looking for GEP in LoadStoreVectorizer

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 14 16:52:43 PDT 2017


arsenm added a comment.

In https://reviews.llvm.org/D32101#727682, @rampitec wrote:

> In https://reviews.llvm.org/D32101#727681, @arsenm wrote:
>
> > I don't think this should be needed? Is this representative of the case where you saw this as a problem? If I run this testcase through-separate-const-offset-from-gep first it handles it. This and other cases are expected to be cleaned up by that first
>
>
> It is quite representative. Here is the real piece of code from app, right as it comes to the vectorizer:
>
>   %97 = zext i32 %96 to i64
>   %98 = getelementptr inbounds float, float addrspace(1)* %1, i64 %97
>   %99 = bitcast float addrspace(1)* %98 to i32 addrspace(1)*
>   %100 = load i32, i32 addrspace(1)* %99, align 4, !tbaa !10
>   %101 = add i32 %96, 1
>   %102 = zext i32 %101 to i64
>   %103 = getelementptr inbounds float, float addrspace(1)* %1, i64 %102
>   %104 = bitcast float addrspace(1)* %103 to i32 addrspace(1)*
>   %105 = load i32, i32 addrspace(1)* %104, align 4, !tbaa !10
>   %106 = add i32 %96, 2
>   %107 = zext i32 %106 to i64
>   %108 = getelementptr inbounds float, float addrspace(1)* %1, i64 %107
>   %109 = bitcast float addrspace(1)* %108 to i32 addrspace(1)*
>   %110 = load i32, i32 addrspace(1)* %109, align 4, !tbaa !10
>   %111 = add i32 %96, 3
>   %112 = zext i32 %111 to i64
>   %113 = getelementptr inbounds float, float addrspace(1)* %1, i64 %112
>   %114 = bitcast float addrspace(1)* %113 to i32 addrspace(1)*
>   %115 = load i32, i32 addrspace(1)* %114, align 4, !tbaa !10
>   


What does it look like immediately after SeparateConstOffsetFromGEP? Does one of the other passes break this somehow?


Repository:
  rL LLVM

https://reviews.llvm.org/D32101





More information about the llvm-commits mailing list