1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -run-pass early-machinelicm -mtriple=powerpc64le-unknown-linux-gnu \ 3# RUN: -verify-machineinstrs %s -o - | FileCheck %s 4--- 5name: deadFlagAfterCSE 6# This case tests that after the dead %3 is CSE-ed with hoisted %5 in MachineLICM 7# pass, the dead flag will be cleared for %3 if %5 has users. 8tracksRegLiveness: true 9body: | 10 ; CHECK-LABEL: name: deadFlagAfterCSE 11 ; CHECK: bb.0: 12 ; CHECK: successors: %bb.1(0x80000000) 13 ; CHECK: liveins: $x3, $x4 14 ; CHECK: [[COPY:%[0-9]+]]:g8rc = COPY $x3 15 ; CHECK: [[COPY1:%[0-9]+]]:g8rc = COPY $x4 16 ; CHECK: [[ADD8_:%[0-9]+]]:g8rc_and_g8rc_nox0 = ADD8 [[COPY]], [[COPY1]] 17 ; CHECK: [[ADDI8_:%[0-9]+]]:g8rc_and_g8rc_nox0 = ADDI8 [[ADD8_]], 100 18 ; CHECK: B %bb.1 19 ; CHECK: bb.1: 20 ; CHECK: successors: %bb.1(0x80000000) 21 ; CHECK: [[PHI:%[0-9]+]]:g8rc_and_g8rc_nox0 = PHI [[ADD8_]], %bb.0, %5, %bb.1 22 ; CHECK: STDX [[PHI]], [[ADDI8_]], [[ADD8_]] 23 ; CHECK: [[ADDI8_1:%[0-9]+]]:g8rc = nuw ADDI8 [[PHI]], 1 24 ; CHECK: B %bb.1 25 ; CHECK: bb.2: 26 ; CHECK: BLR8 implicit $lr8, implicit $rm 27 bb.0: 28 liveins: $x3, $x4 29 %0:g8rc = COPY $x3 30 %1:g8rc = COPY $x4 31 %2:g8rc_and_g8rc_nox0 = ADD8 %0, %1 32 dead %3:g8rc_and_g8rc_nox0 = ADDI8 %2, 100 33 B %bb.1 34 35 bb.1: 36 %4:g8rc_and_g8rc_nox0 = PHI %2, %bb.0, %6, %bb.1 37 %5:g8rc_and_g8rc_nox0 = ADDI8 %2, 100 38 STDX %4, %5, %2 39 %6:g8rc = nuw ADDI8 %4, 1 40 B %bb.1 41 42 bb.2: 43 BLR8 implicit $lr8, implicit $rm 44... 45--- 46name: deadFlagAfterCSE2 47# This case tests that after the dead %3 is CSE-ed with hoisted dead %5 in 48# MachineLICM pass, the dead flag will be kept. 49tracksRegLiveness: true 50body: | 51 ; CHECK-LABEL: name: deadFlagAfterCSE2 52 ; CHECK: bb.0: 53 ; CHECK: successors: %bb.1(0x80000000) 54 ; CHECK: liveins: $x3, $x4 55 ; CHECK: [[COPY:%[0-9]+]]:g8rc = COPY $x3 56 ; CHECK: [[COPY1:%[0-9]+]]:g8rc = COPY $x4 57 ; CHECK: [[ADD8_:%[0-9]+]]:g8rc_and_g8rc_nox0 = ADD8 [[COPY]], [[COPY1]] 58 ; CHECK: dead %3:g8rc_and_g8rc_nox0 = ADDI8 [[ADD8_]], 100 59 ; CHECK: B %bb.1 60 ; CHECK: bb.1: 61 ; CHECK: successors: %bb.1(0x80000000) 62 ; CHECK: [[PHI:%[0-9]+]]:g8rc_and_g8rc_nox0 = PHI [[ADD8_]], %bb.0, %5, %bb.1 63 ; CHECK: [[ADDI8_:%[0-9]+]]:g8rc = nuw ADDI8 [[PHI]], 1 64 ; CHECK: B %bb.1 65 ; CHECK: bb.2: 66 ; CHECK: BLR8 implicit $lr8, implicit $rm 67 bb.0: 68 liveins: $x3, $x4 69 %0:g8rc = COPY $x3 70 %1:g8rc = COPY $x4 71 %2:g8rc_and_g8rc_nox0 = ADD8 %0, %1 72 dead %3:g8rc_and_g8rc_nox0 = ADDI8 %2, 100 73 B %bb.1 74 75 bb.1: 76 %4:g8rc_and_g8rc_nox0 = PHI %2, %bb.0, %6, %bb.1 77 dead %5:g8rc_and_g8rc_nox0 = ADDI8 %2, 100 78 %6:g8rc = nuw ADDI8 %4, 1 79 B %bb.1 80 81 bb.2: 82 BLR8 implicit $lr8, implicit $rm 83... 84 85