[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