diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2019-05-10 19:36:38 +0000 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-05-10 19:36:38 +0000 |
| commit | e99486dc111ab923342da9eeaa5714fa97276ebe (patch) | |
| tree | 916e54fa6e0030689b7fa7064a250b157b1b9ec7 /llvm/test/Transforms | |
| parent | fc86c7fca313655c834066bde6b7d2b0402f580f (diff) | |
| download | bcm5719-llvm-e99486dc111ab923342da9eeaa5714fa97276ebe.tar.gz bcm5719-llvm-e99486dc111ab923342da9eeaa5714fa97276ebe.zip | |
[CVP] Add tests for urem, sdiv, srem ranges; NFC
We currently don't calcuate result ranges for these binary operators.
llvm-svn: 360460
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/CorrelatedValuePropagation/basic.ll | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll b/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll index 9f105ba63a2..cd9dff6bb2f 100644 --- a/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll +++ b/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll @@ -927,3 +927,66 @@ entry: exit: ret i1 %cmp } + +define i1 @urem_unknown(i32 %a) { +; CHECK-LABEL: @urem_unknown( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[UREM:%.*]] = urem i32 [[A:%.*]], 30 +; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[UREM]], 30 +; CHECK-NEXT: br label [[EXIT:%.*]] +; CHECK: exit: +; CHECK-NEXT: ret i1 [[CMP]] +; +entry: + %urem = urem i32 %a, 30 + %cmp = icmp ult i32 %urem, 30 + br label %exit +exit: + ret i1 %cmp +} + +define i1 @srem_unknown(i32 %a) { +; CHECK-LABEL: @srem_unknown( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[SREM:%.*]] = srem i32 [[A:%.*]], 30 +; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i32 [[SREM]], 30 +; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[SREM]], -30 +; CHECK-NEXT: br i1 undef, label [[EXIT1:%.*]], label [[EXIT2:%.*]] +; CHECK: exit1: +; CHECK-NEXT: ret i1 [[CMP1]] +; CHECK: exit2: +; CHECK-NEXT: ret i1 [[CMP2]] +; +entry: + %srem = srem i32 %a, 30 + %cmp1 = icmp slt i32 %srem, 30 + %cmp2 = icmp sgt i32 %srem, -30 + br i1 undef, label %exit1, label %exit2 +exit1: + ret i1 %cmp1 +exit2: + ret i1 %cmp2 +} + +define i1 @sdiv_unknown(i32 %a) { +; CHECK-LABEL: @sdiv_unknown( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[SREM:%.*]] = sdiv i32 [[A:%.*]], 123 +; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i32 [[SREM]], 17459217 +; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[SREM]], -17459217 +; CHECK-NEXT: br i1 undef, label [[EXIT1:%.*]], label [[EXIT2:%.*]] +; CHECK: exit1: +; CHECK-NEXT: ret i1 [[CMP1]] +; CHECK: exit2: +; CHECK-NEXT: ret i1 [[CMP2]] +; +entry: + %srem = sdiv i32 %a, 123 + %cmp1 = icmp slt i32 %srem, 17459217 + %cmp2 = icmp sgt i32 %srem, -17459217 + br i1 undef, label %exit1, label %exit2 +exit1: + ret i1 %cmp1 +exit2: + ret i1 %cmp2 +} |

