[llvm] [InstCombine] Generalize trunc-shift-icmp fold from (1 << Y) to (Pow2 << Y) (PR #169163)
Pedro Lobo via llvm-commits
llvm-commits at lists.llvm.org
Sat Nov 22 05:35:02 PST 2025
================
@@ -526,24 +520,36 @@ define i1 @shl2_trunc_eq8_i32(i32 %a) {
}
define i1 @shl2_trunc_ne8_i32(i32 %a) {
-; DL64-LABEL: @shl2_trunc_ne8_i32(
-; DL64-NEXT: [[SHL:%.*]] = shl i32 2, [[A:%.*]]
-; DL64-NEXT: [[TMP1:%.*]] = and i32 [[SHL]], 65534
-; DL64-NEXT: [[R:%.*]] = icmp ne i32 [[TMP1]], 8
-; DL64-NEXT: ret i1 [[R]]
-;
-; DL8-LABEL: @shl2_trunc_ne8_i32(
-; DL8-NEXT: [[SHL:%.*]] = shl i32 2, [[A:%.*]]
-; DL8-NEXT: [[T:%.*]] = trunc i32 [[SHL]] to i16
-; DL8-NEXT: [[R:%.*]] = icmp ne i16 [[T]], 8
-; DL8-NEXT: ret i1 [[R]]
+; CHECK-LABEL: @shl2_trunc_ne8_i32(
+; CHECK-NEXT: [[R:%.*]] = icmp ne i32 [[A:%.*]], 2
+; CHECK-NEXT: ret i1 [[R]]
;
%shl = shl i32 2, %a
%t = trunc i32 %shl to i16
%r = icmp ne i16 %t, 8
ret i1 %r
}
+define i1 @neg_shl2_trunc_eq0_i8(i8 %a) {
+; CHECK-LABEL: @neg_shl2_trunc_eq0_i8(
+; CHECK-NEXT: ret i1 true
+;
+ %shl = shl i8 256, %a
----------------
pedroclobo wrote:
Right, thanks!
https://github.com/llvm/llvm-project/pull/169163
More information about the llvm-commits
mailing list