74 lines · plain
1# RUN: llc -run-pass opt-phis -mtriple=x86_64-- -o - %s | FileCheck %s2# RUN: llc -passes opt-phis -mtriple=x86_64-- -o - %s | FileCheck %s3# All PHIs should be removed since they can be securely replaced4# by %8 register.5# CHECK-NOT: PHI6--- |7 define void @test() {8 ret void9 }10...11---12name: test13alignment: 1614tracksRegLiveness: true15jumpTable:16 kind: block-address17 entries:18 - id: 019 blocks: [ '%bb.3', '%bb.2', '%bb.1', '%bb.4' ]20body: |21 bb.0:22 liveins: $edi, $ymm0, $rsi23 24 %9:gr64 = COPY $rsi25 %8:vr256 = COPY $ymm026 %7:gr32 = COPY $edi27 %11:gr32 = SAR32ri %7, 31, implicit-def dead $eflags28 %12:gr32 = SHR32ri %11, 30, implicit-def dead $eflags29 %13:gr32 = ADD32rr %7, killed %12, implicit-def dead $eflags30 %14:gr32 = AND32ri8 %13, -4, implicit-def dead $eflags31 %15:gr32 = SUB32rr %7, %14, implicit-def dead $eflags32 %10:gr64_nosp = SUBREG_TO_REG 0, %15, %subreg.sub_32bit33 %16:gr32 = SUB32ri8 %15, 3, implicit-def $eflags34 JCC_1 %bb.8, 7, implicit $eflags35 36 bb.9:37 JMP64m $noreg, 8, %10, %jump-table.0, $noreg :: (load (s64) from jump-table)38 39 bb.1:40 %0:vr256 = COPY %841 JMP_1 %bb.542 43 bb.2:44 %1:vr256 = COPY %845 JMP_1 %bb.646 47 bb.3:48 %2:vr256 = COPY %849 JMP_1 %bb.750 51 bb.4:52 %3:vr256 = COPY %853 %17:vr128 = VEXTRACTF128rri %8, 154 VPEXTRDmri %9, 1, $noreg, 12, $noreg, killed %17, 255 56 bb.5:57 %4:vr256 = PHI %0, %bb.1, %3, %bb.458 %18:vr128 = VEXTRACTF128rri %4, 159 VPEXTRDmri %9, 1, $noreg, 8, $noreg, killed %18, 160 61 bb.6:62 %5:vr256 = PHI %1, %bb.2, %4, %bb.563 %19:vr128 = VEXTRACTF128rri %5, 164 VMOVPDI2DImr %9, 1, $noreg, 4, $noreg, killed %1965 66 bb.7:67 %6:vr256 = PHI %2, %bb.3, %5, %bb.668 %20:vr128 = COPY %6.sub_xmm69 VPEXTRDmri %9, 1, $noreg, 0, $noreg, killed %20, 370 71 bb.8:72 RET 073...74