]> granicus.if.org Git - llvm/commitdiff
[Tests] Add tests for propagation of undef elements in vector GEPs
authorPhilip Reames <listmail@philipreames.com>
Wed, 30 Jan 2019 20:06:24 +0000 (20:06 +0000)
committerPhilip Reames <listmail@philipreames.com>
Wed, 30 Jan 2019 20:06:24 +0000 (20:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352662 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/InstCombine/vec_demanded_elts.ll

index 36847c92f7af9ecefb67f0924a3b0ce13649bd56..bc4b0737938d1a12ad34246f72a4cad554f97f33 100644 (file)
@@ -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
+}
+