[llvm] Simplify `(a % b) lt/ge (b-1)` into `(a % b) eq/ne (b-1)` (PR #72504)
Yingwei Zheng via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 29 09:33:34 PST 2023
================
@@ -10,6 +10,315 @@ declare void @use_i8(i8)
declare void @use_i32(i32)
declare void @use_i64(i64)
+; tests for (x % c) >=/ < (c - 1), where c >= 0
+define i1 @srem_sge_test1(i64 %x) {
+; CHECK-LABEL: @srem_sge_test1(
+; CHECK-NEXT: [[Y:%.*]] = srem i64 [[X:%.*]], 34360750831
+; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[Y]], 34360750830
+; CHECK-NEXT: ret i1 [[CMP]]
+;
+ %Cminus1 = add i64 34360750831, -1
+ %y = srem i64 %x, 34360750831
+ %cmp = icmp sge i64 %y, %Cminus1
----------------
dtcxzyw wrote:
```suggestion
%y = srem i64 %x, 34360750831
%cmp = icmp sge i64 %y, 34360750830
```
Please fold all the constant expressions.
https://github.com/llvm/llvm-project/pull/72504
More information about the llvm-commits
mailing list