[PATCH] D12116: [AArch64] Improve load/store optimizer to handle LDUR + LDR.
Michael Zolotukhin via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 1 17:05:18 PDT 2015
mzolotukhin added a comment.
Hi Chad, Ahmed,
I ran some testing for this patch and found a bug there. The issue is that when we scale offset, we need to make sure that the original value is divisible by the scale factor. Here is a test to illustrate the issue:
define <2 x i64> @test4(i64* %p) nounwind {
%a1 = bitcast i64* %p to <2 x i64>*
%tmp1 = load <2 x i64>, < 2 x i64>* %a1, align 8 # Load <p[0], p[1]>
%add.ptr2 = getelementptr inbounds i64, i64* %p, i64 3
%a2 = bitcast i64* %add.ptr2 to <2 x i64>*
%tmp2 = load <2 x i64>, <2 x i64>* %a2, align 8 # Load <p[3], p[4]>
%add = add nsw <2 x i64> %tmp1, %tmp2
ret <2 x i64> %add
}
The current patch will combine these two loads, which is incorrect.
Michael
Repository:
rL LLVM
http://reviews.llvm.org/D12116
More information about the llvm-commits
mailing list