@@ -332,21 +332,21 @@ define void @test_03(i32 %a, i32 %b, i32 %c, ptr %p) {
332
332
; CHECK-LABEL: 'test_03'
333
333
; CHECK-NEXT: Classifying expressions for: @test_03
334
334
; CHECK-NEXT: %phi1 = phi i32 [ %a, %entry ], [ %phi1.inc, %loop1 ]
335
- ; CHECK-NEXT: --> {%a,+,1}<%loop1> U: full-set S: full-set Exits: (%a umax %c) LoopDispositions: { %loop1: Computable }
335
+ ; CHECK-NEXT: --> {%a,+,1}<nuw>< %loop1> U: full-set S: full-set Exits: (%a umax %c) LoopDispositions: { %loop1: Computable }
336
336
; CHECK-NEXT: %phi1.inc = add i32 %phi1, 1
337
- ; CHECK-NEXT: --> {(1 + %a),+,1}<%loop1> U: full-set S: full-set Exits: (1 + (%a umax %c)) LoopDispositions: { %loop1: Computable }
337
+ ; CHECK-NEXT: --> {(1 + %a),+,1}<nw>< %loop1> U: full-set S: full-set Exits: (1 + (%a umax %c)) LoopDispositions: { %loop1: Computable }
338
338
; CHECK-NEXT: %phi2 = phi i32 [ %a, %loop1 ], [ %phi2.inc, %loop2 ]
339
339
; CHECK-NEXT: --> {%a,+,2}<%loop2> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop2: Computable }
340
340
; CHECK-NEXT: %phi2.inc = add i32 %phi2, 2
341
341
; CHECK-NEXT: --> {(2 + %a),+,2}<%loop2> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop2: Computable }
342
342
; CHECK-NEXT: %v1 = load i32, ptr %p, align 4
343
343
; CHECK-NEXT: --> %v1 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop2: Variant }
344
344
; CHECK-NEXT: %s1 = add i32 %phi1, %v1
345
- ; CHECK-NEXT: --> ({%a,+,1}<%loop1> + %v1) U: full-set S: full-set --> ((%a umax %c) + %v1) U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop2: Variant }
345
+ ; CHECK-NEXT: --> ({%a,+,1}<nuw>< %loop1> + %v1) U: full-set S: full-set --> ((%a umax %c) + %v1) U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop2: Variant }
346
346
; CHECK-NEXT: %s2 = add i32 %s1, %b
347
- ; CHECK-NEXT: --> ({(%a + %b),+,1}<%loop1> + %v1) U: full-set S: full-set --> ((%a umax %c) + %b + %v1) U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop2: Variant }
347
+ ; CHECK-NEXT: --> ({(%a + %b),+,1}<nw>< %loop1> + %v1) U: full-set S: full-set --> ((%a umax %c) + %b + %v1) U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop2: Variant }
348
348
; CHECK-NEXT: %s3 = add i32 %s2, %phi2
349
- ; CHECK-NEXT: --> ({{\{\{}}((2 * %a) + %b),+,1}<%loop1>,+,2}<%loop2> + %v1) U: full-set S: full-set --> ({((%a umax %c) + %a + %b),+,2}<%loop2> + %v1) U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop2: Variant }
349
+ ; CHECK-NEXT: --> ({{\{\{}}((2 * %a) + %b),+,1}<nw>< %loop1>,+,2}<%loop2> + %v1) U: full-set S: full-set --> ({((%a umax %c) + %a + %b),+,2}<%loop2> + %v1) U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop2: Variant }
350
350
; CHECK-NEXT: Determining loop execution counts for: @test_03
351
351
; CHECK-NEXT: Loop %loop2: Unpredictable backedge-taken count.
352
352
; CHECK-NEXT: Loop %loop2: Unpredictable constant max backedge-taken count.
@@ -757,13 +757,13 @@ define i64 @test_09(i32 %param) {
757
757
; CHECK-NEXT: %iv1.next = add nuw nsw i64 %iv1, 1
758
758
; CHECK-NEXT: --> {1,+,1}<nuw><nsw><%loop1> U: [1,4) S: [1,4) Exits: 3 LoopDispositions: { %loop1: Computable }
759
759
; CHECK-NEXT: %iv2 = phi i32 [ %iv2.next, %loop2 ], [ %param, %loop2.preheader ]
760
- ; CHECK-NEXT: --> {%param,+,1}<%loop2> U: full-set S: full-set Exits: (2 smax %param) LoopDispositions: { %loop2: Computable }
760
+ ; CHECK-NEXT: --> {%param,+,1}<nsw>< %loop2> U: full-set S: full-set Exits: (2 smax %param) LoopDispositions: { %loop2: Computable }
761
761
; CHECK-NEXT: %iv2.next = add i32 %iv2, 1
762
- ; CHECK-NEXT: --> {(1 + %param),+,1}<%loop2> U: full-set S: full-set Exits: (1 + (2 smax %param))<nuw> LoopDispositions: { %loop2: Computable }
762
+ ; CHECK-NEXT: --> {(1 + %param),+,1}<nw>< %loop2> U: full-set S: full-set Exits: (1 + (2 smax %param))<nuw> LoopDispositions: { %loop2: Computable }
763
763
; CHECK-NEXT: %iv2.ext = sext i32 %iv2.next to i64
764
- ; CHECK-NEXT: --> (sext i32 {(1 + %param),+,1}<%loop2> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648) --> (sext i32 (1 + (2 smax %param))<nuw> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648)
764
+ ; CHECK-NEXT: --> (sext i32 {(1 + %param),+,1}<nw>< %loop2> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648) --> (sext i32 (1 + (2 smax %param))<nuw> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648)
765
765
; CHECK-NEXT: %ret = mul i64 %iv1, %iv2.ext
766
- ; CHECK-NEXT: --> ((sext i32 {(1 + %param),+,1}<%loop2> to i64) * {0,+,1}<nuw><nsw><%loop1>) U: [-4294967296,4294967295) S: [-4294967296,4294967295) --> (2 * (sext i32 (1 + (2 smax %param))<nuw> to i64))<nsw> U: [0,-1) S: [-4294967296,4294967295)
766
+ ; CHECK-NEXT: --> ((sext i32 {(1 + %param),+,1}<nw>< %loop2> to i64) * {0,+,1}<nuw><nsw><%loop1>) U: [-4294967296,4294967295) S: [-4294967296,4294967295) --> (2 * (sext i32 (1 + (2 smax %param))<nuw> to i64))<nsw> U: [0,-1) S: [-4294967296,4294967295)
767
767
; CHECK-NEXT: Determining loop execution counts for: @test_09
768
768
; CHECK-NEXT: Loop %loop2: backedge-taken count is ((-1 * %param) + (2 smax %param))
769
769
; CHECK-NEXT: Loop %loop2: constant max backedge-taken count is i32 -2147483646
@@ -828,13 +828,13 @@ define i64 @test_10(i32 %param) {
828
828
; CHECK-NEXT: %uncle.outer.next = add i64 %uncle, 1
829
829
; CHECK-NEXT: --> {1,+,1}<nuw><nsw><%uncle.loop> U: [1,2) S: [1,2) Exits: <<Unknown>> LoopDispositions: { %uncle.loop: Computable, %loop1: Invariant }
830
830
; CHECK-NEXT: %iv2 = phi i32 [ %iv2.next, %loop2 ], [ %param, %loop2.preheader ]
831
- ; CHECK-NEXT: --> {%param,+,1}<%loop2> U: full-set S: full-set Exits: (2 smax %param) LoopDispositions: { %loop2: Computable }
831
+ ; CHECK-NEXT: --> {%param,+,1}<nsw>< %loop2> U: full-set S: full-set Exits: (2 smax %param) LoopDispositions: { %loop2: Computable }
832
832
; CHECK-NEXT: %iv2.next = add i32 %iv2, 1
833
- ; CHECK-NEXT: --> {(1 + %param),+,1}<%loop2> U: full-set S: full-set Exits: (1 + (2 smax %param))<nuw> LoopDispositions: { %loop2: Computable }
833
+ ; CHECK-NEXT: --> {(1 + %param),+,1}<nw>< %loop2> U: full-set S: full-set Exits: (1 + (2 smax %param))<nuw> LoopDispositions: { %loop2: Computable }
834
834
; CHECK-NEXT: %iv2.ext = sext i32 %iv2.next to i64
835
- ; CHECK-NEXT: --> (sext i32 {(1 + %param),+,1}<%loop2> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648) --> (sext i32 (1 + (2 smax %param))<nuw> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648)
835
+ ; CHECK-NEXT: --> (sext i32 {(1 + %param),+,1}<nw>< %loop2> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648) --> (sext i32 (1 + (2 smax %param))<nuw> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648)
836
836
; CHECK-NEXT: %ret = mul i64 %iv1, %iv2.ext
837
- ; CHECK-NEXT: --> ((sext i32 {(1 + %param),+,1}<%loop2> to i64) * {0,+,1}<nuw><nsw><%loop1>) U: [-4294967296,4294967295) S: [-4294967296,4294967295) --> (2 * (sext i32 (1 + (2 smax %param))<nuw> to i64))<nsw> U: [0,-1) S: [-4294967296,4294967295)
837
+ ; CHECK-NEXT: --> ((sext i32 {(1 + %param),+,1}<nw>< %loop2> to i64) * {0,+,1}<nuw><nsw><%loop1>) U: [-4294967296,4294967295) S: [-4294967296,4294967295) --> (2 * (sext i32 (1 + (2 smax %param))<nuw> to i64))<nsw> U: [0,-1) S: [-4294967296,4294967295)
838
838
; CHECK-NEXT: Determining loop execution counts for: @test_10
839
839
; CHECK-NEXT: Loop %loop2: backedge-taken count is ((-1 * %param) + (2 smax %param))
840
840
; CHECK-NEXT: Loop %loop2: constant max backedge-taken count is i32 -2147483646
0 commit comments