[llvm] [InstCombine] Increase coverage of shuffle-gep (PR #139725)
via llvm-commits
llvm-commits at lists.llvm.org
Tue May 13 06:09:51 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-transforms
Author: Ramkumar Ramachandra (artagnon)
<details>
<summary>Changes</summary>
There is an uncovered codepath in InstCombineVectorOps, where a new GEP instruction is created via buildNew. Fix this coverage hole.
---
Full diff: https://github.com/llvm/llvm-project/pull/139725.diff
1 Files Affected:
- (modified) llvm/test/Transforms/InstCombine/vec_shuffle.ll (+13)
``````````diff
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> <i32 1>
+ 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) {
``````````
</details>
https://github.com/llvm/llvm-project/pull/139725
More information about the llvm-commits
mailing list