; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=aarch64 < %s | FileCheck %s
define void @peephole_csel(ptr %dst, i1 %0, i1 %cmp) {
; CHECK-LABEL: peephole_csel:
; CHECK: // %bb.0: // %entry
; CHECK-NEXT: tst w2, #0x1
; CHECK-NEXT: mov w8, #1 // =0x1
; CHECK-NEXT: mov x9, xzr
; CHECK-NEXT: tst w1, #0x1
; CHECK-NEXT: csel x8, x8, x9, eq
; CHECK-NEXT: str x8, [x0]
; CHECK-NEXT: ret
entry:
br i1 %0, label %then, label %exit
then: ; preds = %entry
; The donothing() is needed to make make this block less interesting to
; SimplifyCFG. Otherwise we may not get the csel that we want to test.
call void @llvm.donothing()
br i1 %cmp, label %true, label %exit
true: ; preds = %then
; Same as above
call void @llvm.donothing()
br label %exit
exit: ; preds = %true, %then, %entry
%x = phi i64 [ 0, %true ], [ 0, %then ], [ 1, %entry ]
store i64 %x, ptr %dst, align 8
ret void
}