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