# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6 # RUN: llc -mtriple=aarch64-linux-gnu -run-pass=aarch64-condopt -verify-machineinstrs %s -o - | FileCheck %s # RUN: llc -mtriple=aarch64-linux-gnu -passes=aarch64-condopt %s -o - | FileCheck %s --- # Negative test: cross-block compares with different physical registers should # NOT be optimised. bb.0 compares $w0, bb.1 compares $w1. name: cross_block_different_regs tracksRegLiveness: true body: | ; CHECK-LABEL: name: cross_block_different_regs ; CHECK: bb.0: ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) ; CHECK-NEXT: liveins: $w0, $d0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32common = COPY $w0 ; CHECK-NEXT: [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri [[COPY1]], 11, 0, implicit-def $nzcv ; CHECK-NEXT: [[FJCVTZS:%[0-9]+]]:gpr32 = FJCVTZS [[COPY]], implicit-def $nzcv, implicit $fpcr ; CHECK-NEXT: Bcc 11, %bb.1, implicit $nzcv ; CHECK-NEXT: B %bb.2 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.1: ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.3(0x40000000) ; CHECK-NEXT: liveins: $d0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[SUBSWri1:%[0-9]+]]:gpr32 = SUBSWri [[COPY1]], 10, 0, implicit-def $nzcv ; CHECK-NEXT: Bcc 11, %bb.3, implicit $nzcv ; CHECK-NEXT: B %bb.2 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.2: ; CHECK-NEXT: $w0 = MOVi32imm 0 ; CHECK-NEXT: RET_ReallyLR implicit $w0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.3: ; CHECK-NEXT: $w0 = MOVi32imm 1 ; CHECK-NEXT: RET_ReallyLR implicit $w0 bb.0: liveins: $w0, $d0 successors: %bb.1, %bb.2 %2:fpr64 = COPY $d0 %0:gpr32common = COPY $w0 %1:gpr32 = SUBSWri %0, 11, 0, implicit-def $nzcv %4:gpr32 = FJCVTZS %2, implicit-def $nzcv, implicit $fpcr Bcc 11, %bb.1, implicit $nzcv B %bb.2 bb.1: liveins: $d0 successors: %bb.2, %bb.3 %3:gpr32 = SUBSWri %0, 10, 0, implicit-def $nzcv Bcc 11, %bb.3, implicit $nzcv B %bb.2 bb.2: $w0 = MOVi32imm 0 RET_ReallyLR implicit $w0 bb.3: $w0 = MOVi32imm 1 RET_ReallyLR implicit $w0 ...