[PATCH] D145145: [InstCombine] Precommit tests for D141129
Pierre van Houtryve via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 2 00:50:01 PST 2023
Pierre-vh created this revision.
Herald added a project: All.
Pierre-vh requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D145145
Files:
llvm/test/Transforms/InstCombine/shift-add.ll
Index: llvm/test/Transforms/InstCombine/shift-add.ll
===================================================================
--- llvm/test/Transforms/InstCombine/shift-add.ll
+++ llvm/test/Transforms/InstCombine/shift-add.ll
@@ -499,8 +499,34 @@
; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[ADD]], 16
; CHECK-NEXT: ret i32 [[LSHR]]
;
- %a16 = and i32 %a, 65535 ; 0x65535
- %b16 = and i32 %b, 65535 ; 0x65535
+ %a16 = and i32 %a, 65535 ; 0xFFFF
+ %b16 = and i32 %b, 65535 ; 0xFFFF
+ %add = add i32 %a16, %b16
+ %lshr = lshr i32 %add, 16
+ ret i32 %lshr
+}
+
+define i32 @lshr_16_add_known_17_leading_zeroes(i32 %a, i32 %b) {
+; CHECK-LABEL: @lshr_16_add_known_17_leading_zeroes(
+; CHECK-NEXT: ret i32 0
+;
+ %a16 = and i32 %a, 4095 ; 0xFFF
+ %b16 = and i32 %b, 4095 ; 0xFFF
+ %add = add i32 %a16, %b16
+ %lshr = lshr i32 %add, 16
+ ret i32 %lshr
+}
+
+define i32 @lshr_16_add_known_16_17_leading_zeroes(i32 %a, i32 %b) {
+; CHECK-LABEL: @lshr_16_add_known_16_17_leading_zeroes(
+; CHECK-NEXT: [[A16:%.*]] = and i32 [[A:%.*]], 4095
+; CHECK-NEXT: [[B16:%.*]] = and i32 [[B:%.*]], 65535
+; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i32 [[A16]], [[B16]]
+; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[ADD]], 16
+; CHECK-NEXT: ret i32 [[LSHR]]
+;
+ %a16 = and i32 %a, 4095 ; 0xFFF
+ %b16 = and i32 %b, 65535 ; 0xFFFF
%add = add i32 %a16, %b16
%lshr = lshr i32 %add, 16
ret i32 %lshr
@@ -607,6 +633,32 @@
ret i64 %lshr
}
+define i64 @lshr_32_add_known_33_leading_zeroes(i64 %a, i64 %b) {
+; CHECK-LABEL: @lshr_32_add_known_33_leading_zeroes(
+; CHECK-NEXT: ret i64 0
+;
+ %a32 = and i64 %a, 268435455 ; 0xFFFFFFF
+ %b32 = and i64 %b, 268435455 ; 0xFFFFFFF
+ %add = add i64 %a32, %b32
+ %lshr = lshr i64 %add, 32
+ ret i64 %lshr
+}
+
+define i64 @lshr_32_add_known_32_33_leading_zeroes(i64 %a, i64 %b) {
+; CHECK-LABEL: @lshr_32_add_known_32_33_leading_zeroes(
+; CHECK-NEXT: [[A32:%.*]] = and i64 [[A:%.*]], 268435455
+; CHECK-NEXT: [[B32:%.*]] = and i64 [[B:%.*]], 4294967295
+; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i64 [[A32]], [[B32]]
+; CHECK-NEXT: [[LSHR:%.*]] = lshr i64 [[ADD]], 32
+; CHECK-NEXT: ret i64 [[LSHR]]
+;
+ %a32 = and i64 %a, 268435455 ; 0xFFFFFFFF
+ %b32 = and i64 %b, 4294967295 ; 0xFFFFFFF
+ %add = add i64 %a32, %b32
+ %lshr = lshr i64 %add, 32
+ ret i64 %lshr
+}
+
define i64 @lshr_32_add_not_known_32_leading_zeroes(i64 %a, i64 %b) {
;
; CHECK-LABEL: @lshr_32_add_not_known_32_leading_zeroes(
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D145145.501781.patch
Type: text/x-patch
Size: 2484 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230302/25d18d95/attachment.bin>
More information about the llvm-commits
mailing list