Skip to content

Commit 3dd6d5b

Browse files
committed
[tests] Add coverage for different forms of X - urem X, Y
1 parent 56ae2cf commit 3dd6d5b

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

llvm/test/Analysis/ScalarEvolution/urem-0.ll

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,45 @@ define i8 @qux(i8 %a) {
4444
%t3 = urem i8 %a, 2
4545
ret i8 %t3
4646
}
47+
48+
define i32 @test_and_not(i32 %arg) {
49+
; CHECK-LABEL: 'test_and_not'
50+
; CHECK-NEXT: Classifying expressions for: @test_and_not
51+
; CHECK-NEXT: %andn = and i32 %arg, -8
52+
; CHECK-NEXT: --> (8 * (%arg /u 8))<nuw> U: [0,-7) S: [-2147483648,2147483641)
53+
; CHECK-NEXT: Determining loop execution counts for: @test_and_not
54+
;
55+
%andn = and i32 %arg, -8
56+
ret i32 %andn
57+
}
58+
59+
define i32 @test_sub_urem(i32 %arg) {
60+
; CHECK-LABEL: 'test_sub_urem'
61+
; CHECK-NEXT: Classifying expressions for: @test_sub_urem
62+
; CHECK-NEXT: %urem = urem i32 %arg, 8
63+
; CHECK-NEXT: --> (zext i3 (trunc i32 %arg to i3) to i32) U: [0,8) S: [0,8)
64+
; CHECK-NEXT: %sub = sub i32 %arg, %urem
65+
; CHECK-NEXT: --> ((-1 * (zext i3 (trunc i32 %arg to i3) to i32))<nsw> + %arg) U: full-set S: full-set
66+
; CHECK-NEXT: Determining loop execution counts for: @test_sub_urem
67+
;
68+
%urem = urem i32 %arg, 8
69+
%sub = sub i32 %arg, %urem
70+
ret i32 %sub
71+
}
72+
73+
define i32 @test_trunc_zext(i32 %arg) {
74+
; CHECK-LABEL: 'test_trunc_zext'
75+
; CHECK-NEXT: Classifying expressions for: @test_trunc_zext
76+
; CHECK-NEXT: %trunc = trunc i32 %arg to i3
77+
; CHECK-NEXT: --> (trunc i32 %arg to i3) U: full-set S: full-set
78+
; CHECK-NEXT: %zext = zext i3 %trunc to i32
79+
; CHECK-NEXT: --> (zext i3 (trunc i32 %arg to i3) to i32) U: [0,8) S: [0,8)
80+
; CHECK-NEXT: %sub = sub i32 %arg, %zext
81+
; CHECK-NEXT: --> ((-1 * (zext i3 (trunc i32 %arg to i3) to i32))<nsw> + %arg) U: full-set S: full-set
82+
; CHECK-NEXT: Determining loop execution counts for: @test_trunc_zext
83+
;
84+
%trunc = trunc i32 %arg to i3
85+
%zext = zext i3 %trunc to i32
86+
%sub = sub i32 %arg, %zext
87+
ret i32 %sub
88+
}

0 commit comments

Comments
 (0)