From 72fb48359948b3fbe7e44d4e57300d049122753f Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Wed, 30 Jan 2019 20:06:24 +0000 Subject: [PATCH] [Tests] Add tests for propagation of undef elements in vector GEPs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352662 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../InstCombine/vec_demanded_elts.ll | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/Transforms/InstCombine/vec_demanded_elts.ll b/test/Transforms/InstCombine/vec_demanded_elts.ll index 36847c92f7a..bc4b0737938 100644 --- a/test/Transforms/InstCombine/vec_demanded_elts.ll +++ b/test/Transforms/InstCombine/vec_demanded_elts.ll @@ -617,3 +617,28 @@ define i32* @gep_splat_both(i32* %base, i64 %idx) { %ee = extractelement <2 x i32*> %gep, i32 1 ret i32* %ee } + +define <2 x i32*> @gep_all_lanes_undef(i32* %base, i64 %idx) {; +; CHECK-LABEL: @gep_all_lanes_undef( +; CHECK-NEXT: [[BASEVEC:%.*]] = insertelement <2 x i32*> undef, i32* [[BASE:%.*]], i32 0 +; CHECK-NEXT: [[IDXVEC:%.*]] = insertelement <2 x i64> undef, i64 [[IDX:%.*]], i32 1 +; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, <2 x i32*> [[BASEVEC]], <2 x i64> [[IDXVEC]] +; CHECK-NEXT: ret <2 x i32*> [[GEP]] +; + %basevec = insertelement <2 x i32*> undef, i32* %base, i32 0 + %idxvec = insertelement <2 x i64> undef, i64 %idx, i32 1 + %gep = getelementptr i32, <2 x i32*> %basevec, <2 x i64> %idxvec + ret <2 x i32*> %gep +} + +define i32* @gep_demanded_lane_undef(i32* %base, i64 %idx) { +; CHECK-LABEL: @gep_demanded_lane_undef( +; CHECK-NEXT: ret i32* undef +; + %basevec = insertelement <2 x i32*> undef, i32* %base, i32 0 + %idxvec = insertelement <2 x i64> undef, i64 %idx, i32 1 + %gep = getelementptr i32, <2 x i32*> %basevec, <2 x i64> %idxvec + %ee = extractelement <2 x i32*> %gep, i32 1 + ret i32* %ee +} + -- 2.40.0