diff options
| author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2015-10-22 19:57:25 +0000 |
|---|---|---|
| committer | Sanjoy Das <sanjoy@playingwithpointers.com> | 2015-10-22 19:57:25 +0000 |
| commit | a060e602fd6afa836f17da5b7fc865651714d259 (patch) | |
| tree | 6ad3f2891b61f7ec9f81aca13d19726bafa94af9 /llvm/test/Analysis/ScalarEvolution/no-wrap-add-exprs.ll | |
| parent | 8f27415c05bda94861b01ddf97f288c3fbac5abe (diff) | |
| download | bcm5719-llvm-a060e602fd6afa836f17da5b7fc865651714d259.tar.gz bcm5719-llvm-a060e602fd6afa836f17da5b7fc865651714d259.zip | |
[SCEV] Commute sign extends through nsw additions
Summary: Depends on D13613.
Reviewers: atrick, hfinkel, reames, nlewycky
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D13685
llvm-svn: 251049
Diffstat (limited to 'llvm/test/Analysis/ScalarEvolution/no-wrap-add-exprs.ll')
| -rw-r--r-- | llvm/test/Analysis/ScalarEvolution/no-wrap-add-exprs.ll | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/llvm/test/Analysis/ScalarEvolution/no-wrap-add-exprs.ll b/llvm/test/Analysis/ScalarEvolution/no-wrap-add-exprs.ll index 49a4f4f1668..fc5c35f8788 100644 --- a/llvm/test/Analysis/ScalarEvolution/no-wrap-add-exprs.ll +++ b/llvm/test/Analysis/ScalarEvolution/no-wrap-add-exprs.ll @@ -42,3 +42,44 @@ define void @f0(i8* %len_addr) { ret void } + +define void @f1(i8* %len_addr) { +; CHECK-LABEL: Classifying expressions for: @f1 + entry: + %len = load i8, i8* %len_addr, !range !0 + %len_norange = load i8, i8* %len_addr +; CHECK: %len = load i8, i8* %len_addr, !range !0 +; CHECK-NEXT: --> %len U: [0,127) S: [0,127) +; CHECK: %len_norange = load i8, i8* %len_addr +; CHECK-NEXT: --> %len_norange U: full-set S: full-set + + %t0 = add i8 %len, -1 + %t1 = add i8 %len, -2 +; CHECK: %t0 = add i8 %len, -1 +; CHECK-NEXT: --> (-1 + %len)<nsw> U: [-1,126) S: [-1,126) +; CHECK: %t1 = add i8 %len, -2 +; CHECK-NEXT: --> (-2 + %len)<nsw> U: [-2,125) S: [-2,125) + + %t0.sext = sext i8 %t0 to i16 + %t1.sext = sext i8 %t1 to i16 +; CHECK: %t0.sext = sext i8 %t0 to i16 +; CHECK-NEXT: --> (-1 + (zext i8 %len to i16))<nsw> U: [-1,126) S: [-1,126) +; CHECK: %t1.sext = sext i8 %t1 to i16 +; CHECK-NEXT: --> (-2 + (zext i8 %len to i16))<nsw> U: [-2,125) S: [-2,125) + + %q0 = add i8 %len_norange, 1 + %q1 = add i8 %len_norange, 2 +; CHECK: %q0 = add i8 %len_norange, 1 +; CHECK-NEXT: --> (1 + %len_norange) U: full-set S: full-set +; CHECK: %q1 = add i8 %len_norange, 2 +; CHECK-NEXT: --> (2 + %len_norange) U: full-set S: full-set + + %q0.sext = sext i8 %q0 to i16 + %q1.sext = sext i8 %q1 to i16 +; CHECK: %q0.sext = sext i8 %q0 to i16 +; CHECK-NEXT: --> (sext i8 (1 + %len_norange) to i16) U: [-128,128) S: [-128,128) +; CHECK: %q1.sext = sext i8 %q1 to i16 +; CHECK-NEXT: --> (sext i8 (2 + %len_norange) to i16) U: [-128,128) S: [-128,128) + + ret void +} |

