# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6 # RUN: llc -o - %s -mtriple=aarch64-none-eabi -run-pass=machine-cp,aarch64-redundantcondbranch -mcp-use-is-copy-instr | FileCheck %s # RUN: llc -o - %s -mtriple=aarch64-none-eabi -passes=machine-cp,aarch64-redundantcondbranch -mcp-use-is-copy-instr | FileCheck %s --- name: cbz_wzr tracksRegLiveness: true body: | ; CHECK-LABEL: name: cbz_wzr ; CHECK: bb.0: ; CHECK-NEXT: successors: %bb.2(0x40000000) ; CHECK-NEXT: liveins: $x0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: B %bb.2 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.1: ; CHECK-NEXT: $w0 = MOVZWi 10, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.2: ; CHECK-NEXT: $w0 = MOVZWi 20, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 bb.0: liveins: $x0 $w8 = ORRWrs $wzr, $wzr, 0 CBZW killed renamable $w8, %bb.2 bb.1: $w0 = MOVZWi 10, 0 RET undef $lr, implicit $w0 bb.2: $w0 = MOVZWi 20, 0 RET undef $lr, implicit $w0 ... --- name: cbnz_wzr tracksRegLiveness: true body: | ; CHECK-LABEL: name: cbnz_wzr ; CHECK: bb.0: ; CHECK-NEXT: successors: %bb.1(0x40000000) ; CHECK-NEXT: liveins: $x0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.1: ; CHECK-NEXT: $w0 = MOVZWi 10, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.2: ; CHECK-NEXT: $w0 = MOVZWi 20, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 bb.0: liveins: $x0 $w8 = ORRWrs $wzr, $wzr, 0 CBNZW killed renamable $w8, %bb.2 bb.1: $w0 = MOVZWi 10, 0 RET undef $lr, implicit $w0 bb.2: $w0 = MOVZWi 20, 0 RET undef $lr, implicit $w0 ... --- name: tbz_wzr tracksRegLiveness: true body: | ; CHECK-LABEL: name: tbz_wzr ; CHECK: bb.0: ; CHECK-NEXT: successors: %bb.2(0x40000000) ; CHECK-NEXT: liveins: $x0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: B %bb.2 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.1: ; CHECK-NEXT: $w0 = MOVZWi 10, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.2: ; CHECK-NEXT: $w0 = MOVZWi 20, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 bb.0: liveins: $x0 $w8 = ORRWrs $wzr, $wzr, 0 TBZW killed renamable $w8, 0, %bb.2 bb.1: $w0 = MOVZWi 10, 0 RET undef $lr, implicit $w0 bb.2: $w0 = MOVZWi 20, 0 RET undef $lr, implicit $w0 ... --- name: tbnz_wzr tracksRegLiveness: true body: | ; CHECK-LABEL: name: tbnz_wzr ; CHECK: bb.0: ; CHECK-NEXT: successors: %bb.1(0x40000000) ; CHECK-NEXT: liveins: $x0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.1: ; CHECK-NEXT: $w0 = MOVZWi 10, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.2: ; CHECK-NEXT: $w0 = MOVZWi 20, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 bb.0: liveins: $x0 $w8 = ORRWrs $wzr, $wzr, 0 TBNZW killed renamable $w8, 0, %bb.2 bb.1: $w0 = MOVZWi 10, 0 RET undef $lr, implicit $w0 bb.2: $w0 = MOVZWi 20, 0 RET undef $lr, implicit $w0 ... --- name: cbz_xzr tracksRegLiveness: true body: | ; CHECK-LABEL: name: cbz_xzr ; CHECK: bb.0: ; CHECK-NEXT: successors: %bb.2(0x40000000) ; CHECK-NEXT: liveins: $x0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: B %bb.2 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.1: ; CHECK-NEXT: $w0 = MOVZWi 10, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.2: ; CHECK-NEXT: $w0 = MOVZWi 20, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 bb.0: liveins: $x0 $x8 = ORRXrs $xzr, $xzr, 0 CBZX killed renamable $x8, %bb.2 bb.1: $w0 = MOVZWi 10, 0 RET undef $lr, implicit $w0 bb.2: $w0 = MOVZWi 20, 0 RET undef $lr, implicit $w0 ... --- name: cbnz_xzr tracksRegLiveness: true body: | ; CHECK-LABEL: name: cbnz_xzr ; CHECK: bb.0: ; CHECK-NEXT: successors: %bb.1(0x40000000) ; CHECK-NEXT: liveins: $x0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.1: ; CHECK-NEXT: $w0 = MOVZWi 10, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.2: ; CHECK-NEXT: $w0 = MOVZWi 20, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 bb.0: liveins: $x0 $x8 = ORRXrs $xzr, $xzr, 0 CBNZX killed renamable $x8, %bb.2 bb.1: $w0 = MOVZWi 10, 0 RET undef $lr, implicit $w0 bb.2: $w0 = MOVZWi 20, 0 RET undef $lr, implicit $w0 ... --- name: tbz_xzr tracksRegLiveness: true body: | ; CHECK-LABEL: name: tbz_xzr ; CHECK: bb.0: ; CHECK-NEXT: successors: %bb.2(0x40000000) ; CHECK-NEXT: liveins: $x0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: B %bb.2 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.1: ; CHECK-NEXT: $w0 = MOVZWi 10, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.2: ; CHECK-NEXT: $w0 = MOVZWi 20, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 bb.0: liveins: $x0 $x8 = ORRXrs $xzr, $xzr, 0 TBZX killed renamable $x8, 0, %bb.2 bb.1: $w0 = MOVZWi 10, 0 RET undef $lr, implicit $w0 bb.2: $w0 = MOVZWi 20, 0 RET undef $lr, implicit $w0 ... --- name: tbnz_xzr tracksRegLiveness: true body: | ; CHECK-LABEL: name: tbnz_xzr ; CHECK: bb.0: ; CHECK-NEXT: successors: %bb.1(0x40000000) ; CHECK-NEXT: liveins: $x0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.1: ; CHECK-NEXT: $w0 = MOVZWi 10, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.2: ; CHECK-NEXT: $w0 = MOVZWi 20, 0 ; CHECK-NEXT: RET undef $lr, implicit $w0 bb.0: liveins: $x0 $x8 = ORRXrs $xzr, $xzr, 0 TBNZX killed renamable $x8, 0, %bb.2 bb.1: $w0 = MOVZWi 10, 0 RET undef $lr, implicit $w0 bb.2: $w0 = MOVZWi 20, 0 RET undef $lr, implicit $w0 ...