1 # RUN: llc -mcpu=pwr9 -mtriple=powerpc64-unknown-linux-gnu -start-after \
2 # RUN: ppc-mi-peepholes -ppc-late-peephole %s -o - | FileCheck %s
7 exposesReturnsTwice: false
11 tracksRegLiveness: true
13 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
14 - { id: 1, class: g8rc, preferred-register: '' }
15 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
16 - { id: 3, class: gprc, preferred-register: '' }
17 - { id: 4, class: g8rc, preferred-register: '' }
18 - { id: 5, class: g8rc, preferred-register: '' }
19 - { id: 6, class: g8rc, preferred-register: '' }
20 - { id: 7, class: vssrc, preferred-register: '' }
21 - { id: 8, class: gprc, preferred-register: '' }
22 - { id: 9, class: g8rc, preferred-register: '' }
23 - { id: 10, class: g8rc, preferred-register: '' }
24 - { id: 11, class: g8rc, preferred-register: '' }
25 - { id: 12, class: vssrc, preferred-register: '' }
26 - { id: 13, class: vssrc, preferred-register: '' }
28 - { reg: '$x3', virtual-reg: '%0' }
29 - { reg: '$x4', virtual-reg: '%1' }
39 %4 = INSERT_SUBREG %5, killed %3, 1
41 %7 = LXSSPX %0, killed %6, implicit $rm
42 ; CHECK: lfs [[REG1:[0-9]+]], 97(3)
45 %9 = INSERT_SUBREG %10, killed %8, 1
47 %12 = LXSSPX %0, killed %11, implicit $rm
48 ; CHECK-NEXT: lfs [[REG2:[0-9]+]], -92(3)
49 %13 = XSADDSP killed %7, killed %12
50 ; CHECK-NEXT: xsaddsp {{[0-9]+}}, [[REG1]], [[REG2]]
52 BLR8 implicit $lr8, implicit $rm, implicit $f1
58 tracksRegLiveness: true
60 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
61 - { id: 1, class: g8rc, preferred-register: '' }
62 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }
63 - { id: 3, class: gprc, preferred-register: '' }
64 - { id: 4, class: g8rc, preferred-register: '' }
65 - { id: 5, class: g8rc, preferred-register: '' }
66 - { id: 6, class: g8rc, preferred-register: '' }
67 - { id: 7, class: vsfrc, preferred-register: '' }
68 - { id: 8, class: gprc, preferred-register: '' }
69 - { id: 9, class: g8rc, preferred-register: '' }
70 - { id: 10, class: g8rc, preferred-register: '' }
71 - { id: 11, class: g8rc, preferred-register: '' }
72 - { id: 12, class: vsfrc, preferred-register: '' }
73 - { id: 13, class: vsfrc, preferred-register: '' }
75 - { reg: '$x3', virtual-reg: '%0' }
76 - { reg: '$x4', virtual-reg: '%1' }
86 %4 = INSERT_SUBREG %5, killed %3, 1
88 %7 = LXSDX %0, killed %6, implicit $rm
89 ; CHECK: lfd [[REG1:[0-9]+]], 99(3)
92 %9 = INSERT_SUBREG %10, killed %8, 1
94 %12 = LXSDX %0, killed %11, implicit $rm
95 ; CHECK-NEXT: lfd [[REG2:[0-9]+]], -120(3)
96 %13 = XSADDDP killed %7, killed %12, implicit $rm
97 ; CHECK-NEXT: xsadddp {{[0-9]+}}, [[REG1]], [[REG2]]
99 BLR8 implicit $lr8, implicit $rm, implicit $f1
106 exposesReturnsTwice: false
108 regBankSelected: false
110 tracksRegLiveness: true
112 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
113 - { id: 1, class: vssrc, preferred-register: '' }
114 - { id: 2, class: g8rc, preferred-register: '' }
115 - { id: 3, class: g8rc, preferred-register: '' }
117 - { reg: '$x3', virtual-reg: '%0' }
118 - { reg: '$f1', virtual-reg: '%1' }
119 - { reg: '$x5', virtual-reg: '%2' }
122 liveins: $x3, $f1, $x5
128 STXSSPX %1, %0, killed %3, implicit $rm
129 ; CHECK: stfs {{[0-9]+}}, 443(3)
130 BLR8 implicit $lr8, implicit $rm
137 exposesReturnsTwice: false
139 regBankSelected: false
141 tracksRegLiveness: true
143 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
144 - { id: 1, class: vsfrc, preferred-register: '' }
145 - { id: 2, class: g8rc, preferred-register: '' }
146 - { id: 3, class: g8rc, preferred-register: '' }
148 - { reg: '$x3', virtual-reg: '%0' }
149 - { reg: '$f1', virtual-reg: '%1' }
150 - { reg: '$x5', virtual-reg: '%2' }
153 liveins: $x3, $f1, $x5
159 STXSDX %1, %0, killed %3, implicit $rm
160 ; CHECK: stfd {{[0-9]+}}, 7(3)
161 BLR8 implicit $lr8, implicit $rm