# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py # RUN: llc -run-pass early-machinelicm -mtriple=powerpc64le-unknown-linux-gnu \ # RUN: -verify-machineinstrs %s -o - | FileCheck %s --- name: deadFlagAfterCSE # This case tests that after the dead %3 is CSE-ed with hoisted %5 in MachineLICM # pass, the dead flag will be cleared for %3 if %5 has users. tracksRegLiveness: true body: | ; CHECK-LABEL: name: deadFlagAfterCSE ; CHECK: bb.0: ; CHECK: successors: %bb.1(0x80000000) ; CHECK: liveins: $x3, $x4 ; CHECK: [[COPY:%[0-9]+]]:g8rc = COPY $x3 ; CHECK: [[COPY1:%[0-9]+]]:g8rc = COPY $x4 ; CHECK: [[ADD8_:%[0-9]+]]:g8rc_and_g8rc_nox0 = ADD8 [[COPY]], [[COPY1]] ; CHECK: [[ADDI8_:%[0-9]+]]:g8rc_and_g8rc_nox0 = ADDI8 [[ADD8_]], 100 ; CHECK: B %bb.1 ; CHECK: bb.1: ; CHECK: successors: %bb.1(0x80000000) ; CHECK: [[PHI:%[0-9]+]]:g8rc_and_g8rc_nox0 = PHI [[ADD8_]], %bb.0, %5, %bb.1 ; CHECK: STDX [[PHI]], [[ADDI8_]], [[ADD8_]] ; CHECK: [[ADDI8_1:%[0-9]+]]:g8rc = nuw ADDI8 [[PHI]], 1 ; CHECK: B %bb.1 ; CHECK: bb.2: ; CHECK: BLR8 implicit $lr8, implicit $rm bb.0: liveins: $x3, $x4 %0:g8rc = COPY $x3 %1:g8rc = COPY $x4 %2:g8rc_and_g8rc_nox0 = ADD8 %0, %1 dead %3:g8rc_and_g8rc_nox0 = ADDI8 %2, 100 B %bb.1 bb.1: %4:g8rc_and_g8rc_nox0 = PHI %2, %bb.0, %6, %bb.1 %5:g8rc_and_g8rc_nox0 = ADDI8 %2, 100 STDX %4, %5, %2 %6:g8rc = nuw ADDI8 %4, 1 B %bb.1 bb.2: BLR8 implicit $lr8, implicit $rm ... --- name: deadFlagAfterCSE2 # This case tests that after the dead %3 is CSE-ed with hoisted dead %5 in # MachineLICM pass, the dead flag will be kept. tracksRegLiveness: true body: | ; CHECK-LABEL: name: deadFlagAfterCSE2 ; CHECK: bb.0: ; CHECK: successors: %bb.1(0x80000000) ; CHECK: liveins: $x3, $x4 ; CHECK: [[COPY:%[0-9]+]]:g8rc = COPY $x3 ; CHECK: [[COPY1:%[0-9]+]]:g8rc = COPY $x4 ; CHECK: [[ADD8_:%[0-9]+]]:g8rc_and_g8rc_nox0 = ADD8 [[COPY]], [[COPY1]] ; CHECK: dead %3:g8rc_and_g8rc_nox0 = ADDI8 [[ADD8_]], 100 ; CHECK: B %bb.1 ; CHECK: bb.1: ; CHECK: successors: %bb.1(0x80000000) ; CHECK: [[PHI:%[0-9]+]]:g8rc_and_g8rc_nox0 = PHI [[ADD8_]], %bb.0, %5, %bb.1 ; CHECK: [[ADDI8_:%[0-9]+]]:g8rc = nuw ADDI8 [[PHI]], 1 ; CHECK: B %bb.1 ; CHECK: bb.2: ; CHECK: BLR8 implicit $lr8, implicit $rm bb.0: liveins: $x3, $x4 %0:g8rc = COPY $x3 %1:g8rc = COPY $x4 %2:g8rc_and_g8rc_nox0 = ADD8 %0, %1 dead %3:g8rc_and_g8rc_nox0 = ADDI8 %2, 100 B %bb.1 bb.1: %4:g8rc_and_g8rc_nox0 = PHI %2, %bb.0, %6, %bb.1 dead %5:g8rc_and_g8rc_nox0 = ADDI8 %2, 100 %6:g8rc = nuw ADDI8 %4, 1 B %bb.1 bb.2: BLR8 implicit $lr8, implicit $rm ...