; 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 }