forked from OSchip/llvm-project
64 lines
1.8 KiB
YAML
64 lines
1.8 KiB
YAML
# 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
|