diff --git a/llvm/test/Transforms/InstCombine/vec_shuffle.ll b/llvm/test/Transforms/InstCombine/vec_shuffle.ll index dd9fab794917f..fa34a42714c46 100644 --- a/llvm/test/Transforms/InstCombine/vec_shuffle.ll +++ b/llvm/test/Transforms/InstCombine/vec_shuffle.ll @@ -248,6 +248,19 @@ define <2 x i8> @test13a(i8 %x1, i8 %x2) { ret <2 x i8> %D } +define <1 x ptr> @shuffle_gep(ptr %x1, ptr %x2) { +; CHECK-LABEL: @shuffle_gep( +; CHECK-NEXT: [[TMP1:%.*]] = insertelement <1 x ptr> poison, ptr [[X2:%.*]], i64 0 +; CHECK-NEXT: [[RET:%.*]] = getelementptr i8, <1 x ptr> [[TMP1]], i64 5 +; CHECK-NEXT: ret <1 x ptr> [[RET]] +; + %ins.1 = insertelement <2 x ptr> poison, ptr %x1, i32 0 + %ins.2 = insertelement <2 x ptr> %ins.1, ptr %x2, i32 1 + %gep = getelementptr i8, <2 x ptr> %ins.2, i64 5 + %ret = shufflevector <2 x ptr> %gep, <2 x ptr> poison, <1 x i32> + ret <1 x ptr> %ret +} + ; Increasing length of vector ops is not a good canonicalization. define <3 x i32> @add_wider(i32 %y, i32 %z) {