xref: /llvm-project/llvm/test/CodeGen/ARM/dagcombine-drop-flags-freeze.ll (revision 917b3d13b558e61885c3db085e27b4a110ce8032)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2; RUN: llc -mtriple=arm-eabi -o - %s | FileCheck %s
3
4; Ensure poison-generating flags are stripped by the time a freeze operand is visited.
5
6define i1 @drop_flags(i32 noundef %numentries, i64 %cond, i64 %arg) {
7; CHECK-LABEL: drop_flags:
8; CHECK:       @ %bb.0: @ %entry
9; CHECK-NEXT:    ldm sp, {r1, r12}
10; CHECK-NEXT:    subs r1, r2, r1
11; CHECK-NEXT:    sbcs r1, r3, r12
12; CHECK-NEXT:    movlo r0, r2
13; CHECK-NEXT:    rsbs r1, r0, #0
14; CHECK-NEXT:    adc r0, r0, r1
15; CHECK-NEXT:    mov pc, lr
16entry:
17  %cmp4 = icmp samesign ult i64 %cond, %arg
18  %conv6 = trunc nuw i64 %cond to i32
19  %spec.select = select i1 %cmp4, i32 %conv6, i32 %numentries
20  %spec.select.fr = freeze i32 %spec.select
21  %cmpz = icmp eq i32 %spec.select.fr, 0
22  ret i1 %cmpz
23}
24