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