xref: /llvm-project/llvm/test/CodeGen/PowerPC/mi-simplify-code.mir (revision 71f1ab53544c3c379f4d2e6e9dc95c89d8518fe5)
1# RUN: llc -mtriple powerpc64le-unknown-linux-gnu -mcpu=pwr8 -x mir < %s \
2# RUN:   -verify-machineinstrs -start-before=ppc-mi-peepholes | FileCheck %s
3
4---
5name: remove_frsp
6alignment:       16
7tracksRegLiveness: true
8body:             |
9  bb.0.entry:
10    liveins: $x3, $x4
11
12    %1:g8rc = COPY $x4
13    %0:g8rc_and_g8rc_nox0 = COPY $x3
14    %2:g8rc = RLDICR %1, 2, 61
15    %3:f8rc, %4:g8rc_and_g8rc_nox0 = LFSUX %0, killed %2
16    %5:f4rc = FRSP killed %3, implicit $rm
17    %22:vslrc = SUBREG_TO_REG 1, %5, %subreg.sub_64
18    %7:g8rc = LI8 8
19    %8:vssrc = XFLOADf32 %4, killed %7
20    %23:vslrc = SUBREG_TO_REG 1, %8, %subreg.sub_64
21    %10:vsrc = XXPERMDI %23, %22, 0
22    %11:vrrc = XVCVDPSP killed %10, implicit $rm
23    $v2 = COPY %11
24    BLR8 implicit $lr8, implicit $rm, implicit $v2
25...
26# CHECK-LABEL: remove_frsp
27# CHECK: sldi 4, 4, 2
28# CHECK-NEXT: lfsux 0, 3, 4
29# CHECK-NOT: frsp
30# CHECK-NEXT: lfs 1, 8(3)
31# CHECK-NEXT: xxmrghd	0, 1, 0
32# CHECK-NEXT: xvcvdpsp 34, 0
33# CHECK-NEXT: blr
34
35---
36name: remove_xsrsp
37tracksRegLiveness: true
38body:             |
39  bb.0.entry:
40    liveins: $x3, $x4
41
42    %1:g8rc = COPY $x4
43    %0:g8rc_and_g8rc_nox0 = COPY $x3
44    %2:g8rc = RLDICR %1, 2, 61
45    %3:f8rc, %4:g8rc_and_g8rc_nox0 = LFSUX %0, killed %2
46    %5:vssrc = XSRSP killed %3
47    %22:vslrc = SUBREG_TO_REG 1, %5, %subreg.sub_64
48    %7:g8rc = LI8 8
49    %8:vssrc = XFLOADf32 %4, killed %7
50    %23:vslrc = SUBREG_TO_REG 1, %8, %subreg.sub_64
51    %10:vsrc = XXPERMDI %23, %22, 0
52    %11:vrrc = XVCVDPSP killed %10, implicit $rm
53    $v2 = COPY %11
54    BLR8 implicit $lr8, implicit $rm, implicit $v2
55...
56# CHECK-LABEL: remove_xsrsp
57# CHECK: sldi 4, 4, 2
58# CHECK-NEXT: lfsux 0, 3, 4
59# CHECK-NOT: xsrsp
60# CHECK-NEXT: lfs 1, 8(3)
61# CHECK-NEXT: xxmrghd	0, 1, 0
62# CHECK-NEXT: xvcvdpsp 34, 0
63# CHECK-NEXT: blr
64