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