[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / Transforms / PhaseOrdering / pr36760.ll
blob80997dc82148ad9522cfcfd70a163694bd4bf7ba
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -O2 -S < %s -enable-new-pm=0 | FileCheck %s
3 ; RUN: opt -passes='default<O2>' -S < %s | FileCheck %s
5 define i64 @PR36760(i64 %a) {
6 ; CHECK-LABEL: @PR36760(
7 ; CHECK-NEXT:  entry:
8 ; CHECK-NEXT:    [[TMP0:%.*]] = icmp sgt i64 [[A:%.*]], 0
9 ; CHECK-NEXT:    [[DOTA:%.*]] = select i1 [[TMP0]], i64 [[A]], i64 0
10 ; CHECK-NEXT:    ret i64 [[DOTA]]
12 entry:
13   %retval = alloca i64, align 8
14   %a.addr = alloca i64, align 8
15   store i64 %a, i64* %a.addr, align 8
16   %0 = load i64, i64* %a.addr, align 8
17   %cmp = icmp slt i64 %0, 0
18   br i1 %cmp, label %if.then, label %if.end
20 if.then:
21   store i64 0, i64* %retval, align 8
22   br label %return
24 if.end:
25   %1 = load i64, i64* %a.addr, align 8
26   %shr = ashr i64 %1, 63
27   %2 = load i64, i64* %a.addr, align 8
28   %xor = xor i64 %shr, %2
29   store i64 %xor, i64* %retval, align 8
30   br label %return
32 return:
33   %3 = load i64, i64* %retval, align 8
34   ret i64 %3
37 define i64 @PR36760_2(i64 %a) #0 {
38 ; CHECK-LABEL: @PR36760_2(
39 ; CHECK-NEXT:  entry:
40 ; CHECK-NEXT:    [[TMP0:%.*]] = icmp slt i64 [[A:%.*]], -1
41 ; CHECK-NEXT:    [[TMP1:%.*]] = select i1 [[TMP0]], i64 [[A]], i64 -1
42 ; CHECK-NEXT:    [[RETVAL_0:%.*]] = xor i64 [[TMP1]], -1
43 ; CHECK-NEXT:    ret i64 [[RETVAL_0]]
45 entry:
46   %retval = alloca i64, align 8
47   %a.addr = alloca i64, align 8
48   store i64 %a, i64* %a.addr, align 8
49   %0 = load i64, i64* %a.addr, align 8
50   %cmp = icmp sge i64 %0, 0
51   br i1 %cmp, label %if.then, label %if.end
53 if.then:                                          ; preds = %entry
54   store i64 0, i64* %retval, align 8
55   br label %return
57 if.end:                                           ; preds = %entry
58   %1 = load i64, i64* %a.addr, align 8
59   %shr = ashr i64 %1, 63
60   %2 = load i64, i64* %a.addr, align 8
61   %xor = xor i64 %shr, %2
62   store i64 %xor, i64* %retval, align 8
63   br label %return
65 return:                                           ; preds = %if.end, %if.then
66   %3 = load i64, i64* %retval, align 8
67   ret i64 %3