Skip to content

Commit d84b865

Browse files
committed
[InstCombine][NFC] precommit tests for signed floor division
1 parent 77ef5a6 commit d84b865

File tree

1 file changed

+34
-0
lines changed
  • llvm/test/Transforms/InstCombine

1 file changed

+34
-0
lines changed

llvm/test/Transforms/InstCombine/add.ll

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3018,6 +3018,40 @@ define i32 @floor_sdiv_wrong_op(i32 %x, i32 %y) {
30183018
ret i32 %r
30193019
}
30203020

3021+
define i32 @floor_sdiv_using_srem_by_8(i32 %x) {
3022+
; CHECK-LABEL: @floor_sdiv_using_srem_by_8(
3023+
; CHECK-NEXT: [[D:%.*]] = sdiv i32 [[X:%.*]], 8
3024+
; CHECK-NEXT: [[R:%.*]] = srem i32 [[X]], 8
3025+
; CHECK-NEXT: [[I:%.*]] = icmp ugt i32 [[R]], -2147483648
3026+
; CHECK-NEXT: [[S:%.*]] = sext i1 [[I]] to i32
3027+
; CHECK-NEXT: [[F:%.*]] = add nsw i32 [[D]], [[S]]
3028+
; CHECK-NEXT: ret i32 [[F]]
3029+
;
3030+
%d = sdiv i32 %x, 8
3031+
%r = srem i32 %x, 8
3032+
%i = icmp ugt i32 %r, -2147483648
3033+
%s = sext i1 %i to i32
3034+
%f = add i32 %d, %s
3035+
ret i32 %f
3036+
}
3037+
3038+
define i32 @floor_sdiv_using_srem_by_2(i32 %x) {
3039+
; CHECK-LABEL: @floor_sdiv_using_srem_by_2(
3040+
; CHECK-NEXT: [[D:%.*]] = sdiv i32 [[X:%.*]], 2
3041+
; CHECK-NEXT: [[R:%.*]] = srem i32 [[X]], 2
3042+
; CHECK-NEXT: [[I:%.*]] = icmp ugt i32 [[R]], -2147483648
3043+
; CHECK-NEXT: [[S:%.*]] = sext i1 [[I]] to i32
3044+
; CHECK-NEXT: [[F:%.*]] = add nsw i32 [[D]], [[S]]
3045+
; CHECK-NEXT: ret i32 [[F]]
3046+
;
3047+
%d = sdiv i32 %x, 2
3048+
%r = srem i32 %x, 2
3049+
%i = icmp ugt i32 %r, -2147483648
3050+
%s = sext i1 %i to i32
3051+
%f = add i32 %d, %s
3052+
ret i32 %f
3053+
}
3054+
30213055
; (X s>> (BW - 1)) + (zext (X s> 0)) --> (X s>> (BW - 1)) | (zext (X != 0))
30223056

30233057
define i8 @signum_i8_i8(i8 %x) {

0 commit comments

Comments
 (0)