HomePhabricator

[ValueTracking][SVE] Fix getOffsetFromIndex for scalable vector.

Authored by huihuiz on Mar 20 2020, 2:48 PM.

Description

[ValueTracking][SVE] Fix getOffsetFromIndex for scalable vector.

Summary:
Return None if GEP index type is scalable vector. Size of scalable vectors
are multiplied by a runtime constant.

Avoid transforming:

%a = bitcast i8* %p to <vscale x 16 x i8>*
%tmp0 = getelementptr <vscale x 16 x i8>, <vscale x 16 x i8>* %a, i64 0
store <vscale x 16 x i8> zeroinitializer, <vscale x 16 x i8>* %tmp0
%tmp1 = getelementptr <vscale x 16 x i8>, <vscale x 16 x i8>* %a, i64 1
store <vscale x 16 x i8> zeroinitializer, <vscale x 16 x i8>* %tmp1

into:

%a = bitcast i8* %p to <vscale x 16 x i8>*
%tmp0 = getelementptr <vscale x 16 x i8>, <vscale x 16 x i8>* %a, i64 0
%1 = bitcast <vscale x 16 x i8>* %tmp0 to i8*
call void @llvm.memset.p0i8.i64(i8* align 16 %1, i8 0, i64 32, i1 false)

Reviewers: sdesmalen, efriedma, apazos, reames

Reviewed By: sdesmalen

Subscribers: tschuett, hiraditya, rkruppe, arphaman, psnobl, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D76464

Details

Committed
huihuizMar 20 2020, 2:48 PM
Reviewer
sdesmalen
Differential Revision
D76464: [ValueTracking][SVE] Fix getOffsetFromIndex for scalable vector.
Parents
rG2dec82652e4b: Create basic SBEnvironment class
Branches
Unknown
Tags
Unknown