# RUN: llc -mtriple powerpc64le-unknown-linux-gnu -mcpu=pwr8 -x mir < %s \ # RUN: -verify-machineinstrs -start-before=ppc-mi-peepholes | FileCheck %s --- name: remove_frsp alignment: 16 tracksRegLiveness: true body: | bb.0.entry: liveins: $x3, $x4 %1:g8rc = COPY $x4 %0:g8rc_and_g8rc_nox0 = COPY $x3 %2:g8rc = RLDICR %1, 2, 61 %3:f8rc, %4:g8rc_and_g8rc_nox0 = LFSUX %0, killed %2 %5:f4rc = FRSP killed %3, implicit $rm %22:vslrc = SUBREG_TO_REG 1, %5, %subreg.sub_64 %7:g8rc = LI8 8 %8:vssrc = XFLOADf32 %4, killed %7 %23:vslrc = SUBREG_TO_REG 1, %8, %subreg.sub_64 %10:vsrc = XXPERMDI %23, %22, 0 %11:vrrc = XVCVDPSP killed %10, implicit $rm $v2 = COPY %11 BLR8 implicit $lr8, implicit $rm, implicit $v2 ... # CHECK-LABEL: remove_frsp # CHECK: sldi 4, 4, 2 # CHECK-NEXT: lfsux 0, 3, 4 # CHECK-NOT: frsp # CHECK-NEXT: lfs 1, 8(3) # CHECK-NEXT: xxmrghd 0, 1, 0 # CHECK-NEXT: xvcvdpsp 34, 0 # CHECK-NEXT: blr --- name: remove_xsrsp tracksRegLiveness: true body: | bb.0.entry: liveins: $x3, $x4 %1:g8rc = COPY $x4 %0:g8rc_and_g8rc_nox0 = COPY $x3 %2:g8rc = RLDICR %1, 2, 61 %3:f8rc, %4:g8rc_and_g8rc_nox0 = LFSUX %0, killed %2 %5:vssrc = XSRSP killed %3 %22:vslrc = SUBREG_TO_REG 1, %5, %subreg.sub_64 %7:g8rc = LI8 8 %8:vssrc = XFLOADf32 %4, killed %7 %23:vslrc = SUBREG_TO_REG 1, %8, %subreg.sub_64 %10:vsrc = XXPERMDI %23, %22, 0 %11:vrrc = XVCVDPSP killed %10, implicit $rm $v2 = COPY %11 BLR8 implicit $lr8, implicit $rm, implicit $v2 ... # CHECK-LABEL: remove_xsrsp # CHECK: sldi 4, 4, 2 # CHECK-NEXT: lfsux 0, 3, 4 # CHECK-NOT: xsrsp # CHECK-NEXT: lfs 1, 8(3) # CHECK-NEXT: xxmrghd 0, 1, 0 # CHECK-NEXT: xvcvdpsp 34, 0 # CHECK-NEXT: blr