Files
clang-p2996/llvm/test/CodeGen/AArch64/copyprop.ll
Adrian Tong 7c13ae6490 Give option to use isCopyInstr to determine which MI is
treated as Copy instruction in MCP.

This is then used in AArch64 to remove copy instructions after taildup
ran in machine block placement

Differential Revision: https://reviews.llvm.org/D125335
2022-05-26 18:43:16 +00:00

41 lines
1.0 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -O3 -mtriple=aarch64-- | FileCheck %s
define void @copyprop_after_mbp(i32 %v, i32* %a, i32* %b, i32* %c, i32* %d) {
; CHECK-LABEL: copyprop_after_mbp:
; CHECK: // %bb.0:
; CHECK-NEXT: cmp w0, #10
; CHECK-NEXT: b.ne .LBB0_2
; CHECK-NEXT: // %bb.1: // %bb.0
; CHECK-NEXT: mov w9, #15
; CHECK-NEXT: mov w8, #1
; CHECK-NEXT: str w9, [x2]
; CHECK-NEXT: mov w9, #12
; CHECK-NEXT: str w8, [x1]
; CHECK-NEXT: str w9, [x4]
; CHECK-NEXT: ret
; CHECK-NEXT: .LBB0_2: // %bb.1
; CHECK-NEXT: mov w9, #25
; CHECK-NEXT: str w9, [x3]
; CHECK-NEXT: mov w9, #12
; CHECK-NEXT: str wzr, [x1]
; CHECK-NEXT: str w9, [x4]
; CHECK-NEXT: ret
%1 = icmp eq i32 %v, 10
br i1 %1, label %bb.0, label %bb.1
bb.0:
store i32 15, i32* %b, align 4
br label %bb.2
bb.1:
store i32 25, i32* %c, align 4
br label %bb.2
bb.2:
%2 = phi i32 [ 1, %bb.0 ], [ 0, %bb.1 ]
store i32 %2, i32* %a, align 4
store i32 12, i32* %d, align 4
ret void
}