[llvm] 3a23675 - [ValueTracking] Add tests for non-constant idx in `computeKnownBits` of `insertelement`; NFC
Noah Goldstein via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 8 23:02:02 PDT 2024
Author: Noah Goldstein
Date: 2024-04-09T01:01:41-05:00
New Revision: 3a2367561d7f4eb1795d6972b294562bc66beb2b
URL: https://github.com/llvm/llvm-project/commit/3a2367561d7f4eb1795d6972b294562bc66beb2b
DIFF: https://github.com/llvm/llvm-project/commit/3a2367561d7f4eb1795d6972b294562bc66beb2b.diff
LOG: [ValueTracking] Add tests for non-constant idx in `computeKnownBits` of `insertelement`; NFC
Added:
Modified:
llvm/test/Transforms/InstCombine/insertelement.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/InstCombine/insertelement.ll b/llvm/test/Transforms/InstCombine/insertelement.ll
index 976c495465ce47..178e2e25474a3a 100644
--- a/llvm/test/Transforms/InstCombine/insertelement.ll
+++ b/llvm/test/Transforms/InstCombine/insertelement.ll
@@ -25,3 +25,53 @@ define <4 x i32> @insert_unknown_idx(<4 x i32> %x, i32 %idx) {
%v3 = and <4 x i32> %v2, <i32 7, i32 7, i32 7, i32 7>
ret <4 x i32> %v3
}
+
+define <2 x i8> @insert_known_any_idx(<2 x i8> %xx, i8 %yy, i32 %idx) {
+; CHECK-LABEL: @insert_known_any_idx(
+; CHECK-NEXT: [[X:%.*]] = or <2 x i8> [[XX:%.*]], <i8 16, i8 16>
+; CHECK-NEXT: [[Y:%.*]] = or i8 [[YY:%.*]], 16
+; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 [[IDX:%.*]]
+; CHECK-NEXT: [[R:%.*]] = and <2 x i8> [[INS]], <i8 16, i8 16>
+; CHECK-NEXT: ret <2 x i8> [[R]]
+;
+ %x = or <2 x i8> %xx, <i8 16, i8 16>
+ %y = or i8 %yy, 16
+
+ %ins = insertelement <2 x i8> %x, i8 %y, i32 %idx
+ %r = and <2 x i8> %ins, <i8 16, i8 16>
+ ret <2 x i8> %r
+}
+
+define <2 x i8> @insert_known_any_idx_fail1(<2 x i8> %xx, i8 %yy, i32 %idx) {
+; CHECK-LABEL: @insert_known_any_idx_fail1(
+; CHECK-NEXT: [[X:%.*]] = or <2 x i8> [[XX:%.*]], <i8 17, i8 33>
+; CHECK-NEXT: [[Y:%.*]] = or i8 [[YY:%.*]], 16
+; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 [[IDX:%.*]]
+; CHECK-NEXT: [[R:%.*]] = and <2 x i8> [[INS]], <i8 16, i8 16>
+; CHECK-NEXT: ret <2 x i8> [[R]]
+;
+ %x = or <2 x i8> %xx, <i8 17, i8 33>
+ %y = or i8 %yy, 16
+
+ %ins = insertelement <2 x i8> %x, i8 %y, i32 %idx
+ %r = and <2 x i8> %ins, <i8 16, i8 16>
+ ret <2 x i8> %r
+}
+
+
+define <2 x i8> @insert_known_any_idx_fail2(<2 x i8> %xx, i8 %yy, i32 %idx) {
+; CHECK-LABEL: @insert_known_any_idx_fail2(
+; CHECK-NEXT: [[X:%.*]] = or <2 x i8> [[XX:%.*]], <i8 17, i8 31>
+; CHECK-NEXT: [[Y:%.*]] = or i8 [[YY:%.*]], 15
+; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 [[IDX:%.*]]
+; CHECK-NEXT: [[R:%.*]] = and <2 x i8> [[INS]], <i8 16, i8 16>
+; CHECK-NEXT: ret <2 x i8> [[R]]
+;
+ %x = or <2 x i8> %xx, <i8 17, i8 31>
+ %y = or i8 %yy, 15
+
+ %ins = insertelement <2 x i8> %x, i8 %y, i32 %idx
+ %r = and <2 x i8> %ins, <i8 16, i8 16>
+ ret <2 x i8> %r
+}
+
More information about the llvm-commits
mailing list