[ARM] Better OR's for MVE compares
[llvm-core.git] / test / Transforms / SimplifyCFG / unreachable_assume.ll
blobe0d1e27a99523248271aeb2ce5812a71a1c2cd21
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt %s -simplifycfg -instcombine -S | FileCheck %s
4 define i32 @assume1(i32 %p) {
5 ; CHECK-LABEL: @assume1(
6 ; CHECK-NEXT:  entry:
7 ; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[P:%.*]], 0
8 ; CHECK-NEXT:    call void @llvm.assume(i1 [[CMP]])
9 ; CHECK-NEXT:    ret i32 [[P]]
11 entry:
12   %cmp = icmp sle i32 %p, 0
13   br i1 %cmp, label %if.then, label %if.end
15 if.then:
16   unreachable
18 if.end:
19   %call = call i32 @abs(i32 %p)
20   ret i32 %call
24 define i32 @assume2(i32 %p) {
25 ; CHECK-LABEL: @assume2(
26 ; CHECK-NEXT:  entry:
27 ; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[P:%.*]], 0
28 ; CHECK-NEXT:    call void @llvm.assume(i1 [[CMP]])
29 ; CHECK-NEXT:    ret i32 [[P]]
31 entry:
32   %cmp = icmp sgt i32 %p, 0
33   br i1 %cmp, label %if.then, label %if.else
35 if.then:
36   br label %if.end
38 if.else:
39   unreachable
41 if.end:
42   %call = call i32 @abs(i32 %p)
43   ret i32 %call
46 declare i32 @abs(i32)