xref: /llvm-project/llvm/test/CodeGen/PowerPC/aix-csr.ll (revision 9a28814f59e8f52cc63ae3d17023cee8348d9b53)
1; RUN: llc -mtriple=powerpc64-unknown-aix-xcoff -verify-machineinstrs \
2; RUN: -mcpu=pwr4 -mattr=-altivec -stop-after=prologepilog < %s | \
3; RUN: FileCheck --check-prefix=MIR64 %s
4
5; RUN: llc -mtriple=powerpc64-unknown-aix-xcoff -verify-machineinstrs \
6; RUN: -mcpu=pwr4 -mattr=-altivec < %s | FileCheck --check-prefix=ASM64 %s
7
8; RUN: llc -mtriple=powerpc-unknown-aix-xcoff -verify-machineinstrs \
9; RUN: -mcpu=pwr4 -mattr=-altivec -stop-after=prologepilog < %s | \
10; RUN: FileCheck --check-prefix=MIR32 %s
11
12; RUN: llc -mtriple=powerpc-unknown-aix-xcoff -verify-machineinstrs \
13; RUN: -mcpu=pwr4 -mattr=-altivec < %s | FileCheck --check-prefix=ASM32 %s
14
15define dso_local signext i32 @gprs_only(i32 signext %i) {
16entry:
17  call void asm sideeffect "", "~{r16},~{r22},~{r30}"()
18  ret i32 %i
19}
20
21; MIR64:       name:            gprs_only
22; MIR64-LABEL: fixedStack:
23; MIR64-NEXT:  - { id: 0, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default,
24; MIR64-NEXT:      callee-saved-register: '$x31', callee-saved-restored: true, debug-info-variable: '',
25; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
26; MIR64-NEXT:  - { id: 1, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default,
27; MIR64-NEXT:      callee-saved-register: '$x30', callee-saved-restored: true, debug-info-variable: '',
28; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
29; MIR64-NEXT:  - { id: 2, type: spill-slot, offset: -24, size: 8, alignment: 8, stack-id: default,
30; MIR64-NEXT:      callee-saved-register: '$x29', callee-saved-restored: true, debug-info-variable: '',
31; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
32; MIR64-NEXT:  - { id: 3, type: spill-slot, offset: -32, size: 8, alignment: 16, stack-id: default,
33; MIR64-NEXT:      callee-saved-register: '$x28', callee-saved-restored: true, debug-info-variable: '',
34; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
35; MIR64-NEXT:  - { id: 4, type: spill-slot, offset: -40, size: 8, alignment: 8, stack-id: default,
36; MIR64-NEXT:      callee-saved-register: '$x27', callee-saved-restored: true, debug-info-variable: '',
37; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
38; MIR64-NEXT:  - { id: 5, type: spill-slot, offset: -48, size: 8, alignment: 16, stack-id: default,
39; MIR64-NEXT:      callee-saved-register: '$x26', callee-saved-restored: true, debug-info-variable: '',
40; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
41; MIR64-NEXT:  - { id: 6, type: spill-slot, offset: -56, size: 8, alignment: 8, stack-id: default,
42; MIR64-NEXT:      callee-saved-register: '$x25', callee-saved-restored: true, debug-info-variable: '',
43; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
44; MIR64-NEXT:  - { id: 7, type: spill-slot, offset: -64, size: 8, alignment: 16, stack-id: default,
45; MIR64-NEXT:      callee-saved-register: '$x24', callee-saved-restored: true, debug-info-variable: '',
46; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
47; MIR64-NEXT:  - { id: 8, type: spill-slot, offset: -72, size: 8, alignment: 8, stack-id: default,
48; MIR64-NEXT:      callee-saved-register: '$x23', callee-saved-restored: true, debug-info-variable: '',
49; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
50; MIR64-NEXT:  - { id: 9, type: spill-slot, offset: -80, size: 8, alignment: 16, stack-id: default,
51; MIR64-NEXT:      callee-saved-register: '$x22', callee-saved-restored: true, debug-info-variable: '',
52; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
53; MIR64-NEXT:  - { id: 10, type: spill-slot, offset: -88, size: 8, alignment: 8, stack-id: default,
54; MIR64-NEXT:      callee-saved-register: '$x21', callee-saved-restored: true, debug-info-variable: '',
55; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
56; MIR64-NEXT:  - { id: 11, type: spill-slot, offset: -96, size: 8, alignment: 16, stack-id: default,
57; MIR64-NEXT:      callee-saved-register: '$x20', callee-saved-restored: true, debug-info-variable: '',
58; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
59; MIR64-NEXT:  - { id: 12, type: spill-slot, offset: -104, size: 8, alignment: 8, stack-id: default,
60; MIR64-NEXT:      callee-saved-register: '$x19', callee-saved-restored: true, debug-info-variable: '',
61; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
62; MIR64-NEXT:  - { id: 13, type: spill-slot, offset: -112, size: 8, alignment: 16, stack-id: default,
63; MIR64-NEXT:      callee-saved-register: '$x18', callee-saved-restored: true, debug-info-variable: '',
64; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
65; MIR64-NEXT:  - { id: 14, type: spill-slot, offset: -120, size: 8, alignment: 8, stack-id: default,
66; MIR64-NEXT:      callee-saved-register: '$x17', callee-saved-restored: true, debug-info-variable: '',
67; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
68; MIR64-NEXT:  - { id: 15, type: spill-slot, offset: -128, size: 8, alignment: 16, stack-id: default,
69; MIR64-NEXT:      callee-saved-register: '$x16', callee-saved-restored: true, debug-info-variable: '',
70; MIR64-NEXT:      debug-info-expression: '', debug-info-location: '' }
71; MIR64-NEXT:  stack:           []
72
73; MIR32:       name:            gprs_only
74; MIR32-LABEL: fixedStack:
75; MIR32-NEXT:  - { id: 0, type: spill-slot, offset: -4, size: 4, alignment: 4, stack-id: default,
76; MIR32-NEXT:      callee-saved-register: '$r31', callee-saved-restored: true, debug-info-variable: '',
77; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
78; MIR32-NEXT:  - { id: 1, type: spill-slot, offset: -8, size: 4, alignment: 8, stack-id: default,
79; MIR32-NEXT:      callee-saved-register: '$r30', callee-saved-restored: true, debug-info-variable: '',
80; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
81; MIR32-NEXT:  - { id: 2, type: spill-slot, offset: -12, size: 4, alignment: 4, stack-id: default,
82; MIR32-NEXT:      callee-saved-register: '$r29', callee-saved-restored: true, debug-info-variable: '',
83; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
84; MIR32-NEXT:  - { id: 3, type: spill-slot, offset: -16, size: 4, alignment: 16, stack-id: default,
85; MIR32-NEXT:      callee-saved-register: '$r28', callee-saved-restored: true, debug-info-variable: '',
86; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
87; MIR32-NEXT:  - { id: 4, type: spill-slot, offset: -20, size: 4, alignment: 4, stack-id: default,
88; MIR32-NEXT:      callee-saved-register: '$r27', callee-saved-restored: true, debug-info-variable: '',
89; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
90; MIR32-NEXT:  - { id: 5, type: spill-slot, offset: -24, size: 4, alignment: 8, stack-id: default,
91; MIR32-NEXT:      callee-saved-register: '$r26', callee-saved-restored: true, debug-info-variable: '',
92; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
93; MIR32-NEXT:  - { id: 6, type: spill-slot, offset: -28, size: 4, alignment: 4, stack-id: default,
94; MIR32-NEXT:      callee-saved-register: '$r25', callee-saved-restored: true, debug-info-variable: '',
95; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
96; MIR32-NEXT:  - { id: 7, type: spill-slot, offset: -32, size: 4, alignment: 16, stack-id: default,
97; MIR32-NEXT:      callee-saved-register: '$r24', callee-saved-restored: true, debug-info-variable: '',
98; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
99; MIR32-NEXT:  - { id: 8, type: spill-slot, offset: -36, size: 4, alignment: 4, stack-id: default,
100; MIR32-NEXT:      callee-saved-register: '$r23', callee-saved-restored: true, debug-info-variable: '',
101; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
102; MIR32-NEXT:  - { id: 9, type: spill-slot, offset: -40, size: 4, alignment: 8, stack-id: default,
103; MIR32-NEXT:      callee-saved-register: '$r22', callee-saved-restored: true, debug-info-variable: '',
104; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
105; MIR32-NEXT:  - { id: 10, type: spill-slot, offset: -44, size: 4, alignment: 4, stack-id: default,
106; MIR32-NEXT:      callee-saved-register: '$r21', callee-saved-restored: true, debug-info-variable: '',
107; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
108; MIR32-NEXT:  - { id: 11, type: spill-slot, offset: -48, size: 4, alignment: 16, stack-id: default,
109; MIR32-NEXT:      callee-saved-register: '$r20', callee-saved-restored: true, debug-info-variable: '',
110; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
111; MIR32-NEXT:  - { id: 12, type: spill-slot, offset: -52, size: 4, alignment: 4, stack-id: default,
112; MIR32-NEXT:      callee-saved-register: '$r19', callee-saved-restored: true, debug-info-variable: '',
113; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
114; MIR32-NEXT:  - { id: 13, type: spill-slot, offset: -56, size: 4, alignment: 8, stack-id: default,
115; MIR32-NEXT:      callee-saved-register: '$r18', callee-saved-restored: true, debug-info-variable: '',
116; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
117; MIR32-NEXT:  - { id: 14, type: spill-slot, offset: -60, size: 4, alignment: 4, stack-id: default,
118; MIR32-NEXT:      callee-saved-register: '$r17', callee-saved-restored: true, debug-info-variable: '',
119; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
120; MIR32-NEXT:  - { id: 15, type: spill-slot, offset: -64, size: 4, alignment: 16, stack-id: default,
121; MIR32-NEXT:      callee-saved-register: '$r16', callee-saved-restored: true, debug-info-variable: '',
122; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
123; MIR32-NEXT:  stack:           []
124
125
126; MIR64: liveins: $x3, $x16, $x17, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $x29, $x30, $x31
127
128; MIR64-DAG:       STD killed $x16, -128, $x1 :: (store (s64) into %fixed-stack.15, align 16)
129; MIR64-DAG:  STD killed $x17, -120, $x1 :: (store (s64) into %fixed-stack.14)
130; MIR64-DAG:  STD killed $x18, -112, $x1 :: (store (s64) into %fixed-stack.13, align 16)
131; MIR64-DAG:  STD killed $x19, -104, $x1 :: (store (s64) into %fixed-stack.12)
132; MIR64-DAG:  STD killed $x20, -96, $x1 :: (store (s64) into %fixed-stack.11, align 16)
133; MIR64-DAG:  STD killed $x21, -88, $x1 :: (store (s64) into %fixed-stack.10)
134; MIR64-DAG:  STD killed $x22, -80, $x1 :: (store (s64) into %fixed-stack.9, align 16)
135; MIR64-DAG:  STD killed $x23, -72, $x1 :: (store (s64) into %fixed-stack.8)
136; MIR64-DAG:  STD killed $x24, -64, $x1 :: (store (s64) into %fixed-stack.7, align 16)
137; MIR64-DAG:  STD killed $x25, -56, $x1 :: (store (s64) into %fixed-stack.6)
138; MIR64-DAG:  STD killed $x26, -48, $x1 :: (store (s64) into %fixed-stack.5, align 16)
139; MIR64-DAG:  STD killed $x27, -40, $x1 :: (store (s64) into %fixed-stack.4)
140; MIR64-DAG:  STD killed $x28, -32, $x1 :: (store (s64) into %fixed-stack.3, align 16)
141; MIR64-DAG:  STD killed $x29, -24, $x1 :: (store (s64) into %fixed-stack.2)
142; MIR64-DAG:  STD killed $x30, -16, $x1 :: (store (s64) into %fixed-stack.1, align 16)
143; MIR64-DAG:  STD killed $x31, -8, $x1 :: (store (s64) into %fixed-stack.0)
144
145; MIR64:     INLINEASM
146
147
148; MIR64-DAG:    $x31 = LD -8, $x1 :: (load (s64) from %fixed-stack.0)
149; MIR64-DAG:    $x30 = LD -16, $x1 :: (load (s64) from %fixed-stack.1, align 16)
150; MIR64-DAG:    $x29 = LD -24, $x1 :: (load (s64) from %fixed-stack.2)
151; MIR64-DAG:    $x28 = LD -32, $x1 :: (load (s64) from %fixed-stack.3, align 16)
152; MIR64-DAG:    $x27 = LD -40, $x1 :: (load (s64) from %fixed-stack.4)
153; MIR64-DAG:    $x26 = LD -48, $x1 :: (load (s64) from %fixed-stack.5, align 16)
154; MIR64-DAG:    $x25 = LD -56, $x1 :: (load (s64) from %fixed-stack.6)
155; MIR64-DAG:    $x24 = LD -64, $x1 :: (load (s64) from %fixed-stack.7, align 16)
156; MIR64-DAG:    $x23 = LD -72, $x1 :: (load (s64) from %fixed-stack.8)
157; MIR64-DAG:    $x22 = LD -80, $x1 :: (load (s64) from %fixed-stack.9, align 16)
158; MIR64-DAG:    $x21 = LD -88, $x1 :: (load (s64) from %fixed-stack.10)
159; MIR64-DAG:    $x20 = LD -96, $x1 :: (load (s64) from %fixed-stack.11, align 16)
160; MIR64-DAG:    $x19 = LD -104, $x1 :: (load (s64) from %fixed-stack.12)
161; MIR64-DAG:    $x18 = LD -112, $x1 :: (load (s64) from %fixed-stack.13, align 16)
162; MIR64-DAG:    $x17 = LD -120, $x1 :: (load (s64) from %fixed-stack.14)
163; MIR64-DAG:    $x16 = LD -128, $x1 :: (load (s64) from %fixed-stack.15, align 16)
164; MIR64:        BLR8 implicit $lr8, implicit $rm, implicit $x3
165
166
167; MIR32:  liveins: $r3, $r16, $r17, $r18, $r19, $r20, $r21, $r22, $r23, $r24, $r25, $r26, $r27, $r28, $r29, $r30, $r31
168
169; MIR32-DAG:  STW killed $r16, -64, $r1 :: (store (s32) into %fixed-stack.15, align 16)
170; MIR32-DAG:  STW killed $r17, -60, $r1 :: (store (s32) into %fixed-stack.14)
171; MIR32-DAG:  STW killed $r18, -56, $r1 :: (store (s32) into %fixed-stack.13, align 8)
172; MIR32-DAG:  STW killed $r19, -52, $r1 :: (store (s32) into %fixed-stack.12)
173; MIR32-DAG:  STW killed $r20, -48, $r1 :: (store (s32) into %fixed-stack.11, align 16)
174; MIR32-DAG:  STW killed $r21, -44, $r1 :: (store (s32) into %fixed-stack.10)
175; MIR32-DAG:  STW killed $r22, -40, $r1 :: (store (s32) into %fixed-stack.9, align 8)
176; MIR32-DAG:  STW killed $r23, -36, $r1 :: (store (s32) into %fixed-stack.8)
177; MIR32-DAG:  STW killed $r24, -32, $r1 :: (store (s32) into %fixed-stack.7, align 16)
178; MIR32-DAG:  STW killed $r25, -28, $r1 :: (store (s32) into %fixed-stack.6)
179; MIR32-DAG:  STW killed $r26, -24, $r1 :: (store (s32) into %fixed-stack.5, align 8)
180; MIR32-DAG:  STW killed $r27, -20, $r1 :: (store (s32) into %fixed-stack.4)
181; MIR32-DAG:  STW killed $r28, -16, $r1 :: (store (s32) into %fixed-stack.3, align 16)
182; MIR32-DAG:  STW killed $r29, -12, $r1 :: (store (s32) into %fixed-stack.2)
183; MIR32-DAG:  STW killed $r30, -8, $r1 :: (store (s32) into %fixed-stack.1, align 8)
184; MIR32-DAG:  STW killed $r31, -4, $r1 :: (store (s32) into %fixed-stack.0)
185
186; MIR32:      INLINEASM
187
188; MIR32-DAG:  $r31 = LWZ -4, $r1 :: (load (s32) from %fixed-stack.0)
189; MIR32-DAG:  $r30 = LWZ -8, $r1 :: (load (s32) from %fixed-stack.1, align 8)
190; MIR32-DAG:  $r29 = LWZ -12, $r1 :: (load (s32) from %fixed-stack.2)
191; MIR32-DAG:  $r28 = LWZ -16, $r1 :: (load (s32) from %fixed-stack.3, align 16)
192; MIR32-DAG:  $r27 = LWZ -20, $r1 :: (load (s32) from %fixed-stack.4)
193; MIR32-DAG:  $r26 = LWZ -24, $r1 :: (load (s32) from %fixed-stack.5, align 8)
194; MIR32-DAG:  $r25 = LWZ -28, $r1 :: (load (s32) from %fixed-stack.6)
195; MIR32-DAG:  $r24 = LWZ -32, $r1 :: (load (s32) from %fixed-stack.7, align 16)
196; MIR32-DAG:  $r23 = LWZ -36, $r1 :: (load (s32) from %fixed-stack.8)
197; MIR32-DAG:  $r22 = LWZ -40, $r1 :: (load (s32) from %fixed-stack.9, align 8)
198; MIR32-DAG:  $r21 = LWZ -44, $r1 :: (load (s32) from %fixed-stack.10)
199; MIR32-DAG:  $r20 = LWZ -48, $r1 :: (load (s32) from %fixed-stack.11, align 16)
200; MIR32-DAG:  $r19 = LWZ -52, $r1 :: (load (s32) from %fixed-stack.12)
201; MIR32-DAG:  $r18 = LWZ -56, $r1 :: (load (s32) from %fixed-stack.13, align 8)
202; MIR32-DAG:  $r17 = LWZ -60, $r1 :: (load (s32) from %fixed-stack.14)
203; MIR32-DAG:  $r16 = LWZ -64, $r1 :: (load (s32) from %fixed-stack.15, align 16)
204; MIR32:      BLR implicit $lr, implicit $rm, implicit $r3
205
206
207; ASM64-LABEL: .gprs_only:
208; ASM64-DAG:     std 16, -128(1)                         # 8-byte Folded Spill
209; ASM64-DAG:     std 17, -120(1)                         # 8-byte Folded Spill
210; ASM64-DAG:     std 18, -112(1)                         # 8-byte Folded Spill
211; ASM64-DAG:     std 19, -104(1)                         # 8-byte Folded Spill
212; ASM64-DAG:     std 20, -96(1)                          # 8-byte Folded Spill
213; ASM64-DAG:     std 21, -88(1)                          # 8-byte Folded Spill
214; ASM64-DAG:     std 22, -80(1)                          # 8-byte Folded Spill
215; ASM64-DAG:     std 23, -72(1)                          # 8-byte Folded Spill
216; ASM64-DAG:     std 24, -64(1)                          # 8-byte Folded Spill
217; ASM64-DAG:     std 25, -56(1)                          # 8-byte Folded Spill
218; ASM64-DAG:     std 26, -48(1)                          # 8-byte Folded Spill
219; ASM64-DAG:     std 27, -40(1)                          # 8-byte Folded Spill
220; ASM64-DAG:     std 28, -32(1)                          # 8-byte Folded Spill
221; ASM64-DAG:     std 29, -24(1)                          # 8-byte Folded Spill
222; ASM64-DAG:     std 30, -16(1)                          # 8-byte Folded Spill
223; ASM64-DAG:     std 31, -8(1)                           # 8-byte Folded Spill
224; ASM64:         #APP
225; AMS64-DAG:     ld 31, -8(1)                            # 8-byte Folded Reload
226; ASM64-DAG:     ld 30, -16(1)                           # 8-byte Folded Reload
227; ASM64-DAG:     ld 29, -24(1)                           # 8-byte Folded Reload
228; ASM64-DAG:      ld 28, -32(1)                           # 8-byte Folded Reload
229; ASM64-DAG:     ld 27, -40(1)                           # 8-byte Folded Reload
230; ASM64-DAG:     ld 26, -48(1)                           # 8-byte Folded Reload
231; ASM64-DAG:     ld 25, -56(1)                           # 8-byte Folded Reload
232; ASM64-DAG:     ld 24, -64(1)                           # 8-byte Folded Reload
233; ASM64-DAG:     ld 23, -72(1)                           # 8-byte Folded Reload
234; ASM64-DAG:     ld 22, -80(1)                           # 8-byte Folded Reload
235; ASM64-DAG:     ld 21, -88(1)                           # 8-byte Folded Reload
236; ASM64-DAG:     ld 20, -96(1)                           # 8-byte Folded Reload
237; ASM64-DAG:     ld 19, -104(1)                          # 8-byte Folded Reload
238; ASM64-DAG:     ld 18, -112(1)                          # 8-byte Folded Reload
239; ASM64-DAG:     ld 17, -120(1)                          # 8-byte Folded Reload
240; ASM64-DAG:     ld 16, -128(1)                          # 8-byte Folded Reload
241; ASM64:          blr
242
243; ASM32-LABEL: .gprs_only:
244; ASM32-DAG:     stw 16, -64(1)                          # 4-byte Folded Spill
245; ASM32-DAG:     stw 17, -60(1)                          # 4-byte Folded Spill
246; ASM32-DAG:     stw 18, -56(1)                          # 4-byte Folded Spill
247; ASM32-DAG:     stw 19, -52(1)                          # 4-byte Folded Spill
248; ASM32-DAG:     stw 20, -48(1)                          # 4-byte Folded Spill
249; ASM32-DAG:     stw 21, -44(1)                          # 4-byte Folded Spill
250; ASM32-DAG:     stw 22, -40(1)                          # 4-byte Folded Spill
251; ASM32-DAG:     stw 23, -36(1)                          # 4-byte Folded Spill
252; ASM32-DAG:     stw 24, -32(1)                          # 4-byte Folded Spill
253; ASM32-DAG:     stw 25, -28(1)                          # 4-byte Folded Spill
254; ASM32-DAG:     stw 26, -24(1)                          # 4-byte Folded Spill
255; ASM32-DAG:     stw 27, -20(1)                          # 4-byte Folded Spill
256; ASM32-DAG:     stw 28, -16(1)                          # 4-byte Folded Spill
257; ASM32-DAG:     stw 29, -12(1)                          # 4-byte Folded Spill
258; ASM32-DAG:     stw 30, -8(1)                           # 4-byte Folded Spill
259; ASM32-DAG:     stw 31, -4(1)                           # 4-byte Folded Spill
260; ASM32:         #APP
261; ASM32-DAG:     lwz 31, -4(1)                           # 4-byte Folded Reload
262; ASM32-DAG:     lwz 30, -8(1)                           # 4-byte Folded Reload
263; ASM32-DAG:     lwz 29, -12(1)                          # 4-byte Folded Reload
264; ASM32-DAG:     lwz 28, -16(1)                          # 4-byte Folded Reload
265; ASM32-DAG:     lwz 27, -20(1)                          # 4-byte Folded Reload
266; ASM32-DAG:     lwz 26, -24(1)                          # 4-byte Folded Reload
267; ASM32-DAG:     lwz 25, -28(1)                          # 4-byte Folded Reload
268; ASM32-DAG:     lwz 24, -32(1)                          # 4-byte Folded Reload
269; ASM32-DAG:     lwz 23, -36(1)                          # 4-byte Folded Reload
270; ASM32-DAG:     lwz 22, -40(1)                          # 4-byte Folded Reload
271; ASM32-DAG:     lwz 21, -44(1)                          # 4-byte Folded Reload
272; ASM32-DAG:     lwz 20, -48(1)                          # 4-byte Folded Reload
273; ASM32-DAG:     lwz 19, -52(1)                          # 4-byte Folded Reload
274; ASM32-DAG:     lwz 18, -56(1)                          # 4-byte Folded Reload
275; ASM32-DAG:     lwz 17, -60(1)                          # 4-byte Folded Reload
276; ASM32-DAG:     lwz 16, -64(1)                          # 4-byte Folded Reload
277; ASM32-DAG:     blr
278
279
280declare double @dummy(i32 signext);
281
282define dso_local double @fprs_and_gprs(i32 signext %i) {
283  call void asm sideeffect "", "~{r13},~{r14},~{r25},~{r31},~{f14},~{f19},~{f21},~{f31}"()
284  %result = call double @dummy(i32 signext %i)
285  ret double %result
286}
287
288; MIR64:       name:            fprs_and_gprs
289; MIR64-LABEL: fixedStack:
290; MIR64-NEXT: - { id: 0, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default,
291; MIR64-NEXT:     callee-saved-register: '$f31', callee-saved-restored: true, debug-info-variable: '',
292; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
293; MIR64-NEXT: - { id: 1, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default,
294; MIR64-NEXT:     callee-saved-register: '$f30', callee-saved-restored: true, debug-info-variable: '',
295; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
296; MIR64-NEXT: - { id: 2, type: spill-slot, offset: -24, size: 8, alignment: 8, stack-id: default,
297; MIR64-NEXT:     callee-saved-register: '$f29', callee-saved-restored: true, debug-info-variable: '',
298; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
299; MIR64-NEXT: - { id: 3, type: spill-slot, offset: -32, size: 8, alignment: 16, stack-id: default,
300; MIR64-NEXT:     callee-saved-register: '$f28', callee-saved-restored: true, debug-info-variable: '',
301; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
302; MIR64-NEXT: - { id: 4, type: spill-slot, offset: -40, size: 8, alignment: 8, stack-id: default,
303; MIR64-NEXT:     callee-saved-register: '$f27', callee-saved-restored: true, debug-info-variable: '',
304; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
305; MIR64-NEXT: - { id: 5, type: spill-slot, offset: -48, size: 8, alignment: 16, stack-id: default,
306; MIR64-NEXT:     callee-saved-register: '$f26', callee-saved-restored: true, debug-info-variable: '',
307; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
308; MIR64-NEXT: - { id: 6, type: spill-slot, offset: -56, size: 8, alignment: 8, stack-id: default,
309; MIR64-NEXT:     callee-saved-register: '$f25', callee-saved-restored: true, debug-info-variable: '',
310; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
311; MIR64-NEXT: - { id: 7, type: spill-slot, offset: -64, size: 8, alignment: 16, stack-id: default,
312; MIR64-NEXT:     callee-saved-register: '$f24', callee-saved-restored: true, debug-info-variable: '',
313; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
314; MIR64-NEXT: - { id: 8, type: spill-slot, offset: -72, size: 8, alignment: 8, stack-id: default,
315; MIR64-NEXT:     callee-saved-register: '$f23', callee-saved-restored: true, debug-info-variable: '',
316; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
317; MIR64-NEXT: - { id: 9, type: spill-slot, offset: -80, size: 8, alignment: 16, stack-id: default,
318; MIR64-NEXT:     callee-saved-register: '$f22', callee-saved-restored: true, debug-info-variable: '',
319; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
320; MIR64-NEXT: - { id: 10, type: spill-slot, offset: -88, size: 8, alignment: 8, stack-id: default,
321; MIR64-NEXT:     callee-saved-register: '$f21', callee-saved-restored: true, debug-info-variable: '',
322; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
323; MIR64-NEXT: - { id: 11, type: spill-slot, offset: -96, size: 8, alignment: 16, stack-id: default,
324; MIR64-NEXT:     callee-saved-register: '$f20', callee-saved-restored: true, debug-info-variable: '',
325; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
326; MIR64-NEXT: - { id: 12, type: spill-slot, offset: -104, size: 8, alignment: 8, stack-id: default,
327; MIR64-NEXT:     callee-saved-register: '$f19', callee-saved-restored: true, debug-info-variable: '',
328; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
329; MIR64-NEXT: - { id: 13, type: spill-slot, offset: -112, size: 8, alignment: 16, stack-id: default,
330; MIR64-NEXT:     callee-saved-register: '$f18', callee-saved-restored: true, debug-info-variable: '',
331; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
332; MIR64-NEXT: - { id: 14, type: spill-slot, offset: -120, size: 8, alignment: 8, stack-id: default,
333; MIR64-NEXT:     callee-saved-register: '$f17', callee-saved-restored: true, debug-info-variable: '',
334; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
335; MIR64-NEXT: - { id: 15, type: spill-slot, offset: -128, size: 8, alignment: 16, stack-id: default,
336; MIR64-NEXT:     callee-saved-register: '$f16', callee-saved-restored: true, debug-info-variable: '',
337; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
338; MIR64-NEXT: - { id: 16, type: spill-slot, offset: -136, size: 8, alignment: 8, stack-id: default,
339; MIR64-NEXT:     callee-saved-register: '$f15', callee-saved-restored: true, debug-info-variable: '',
340; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
341; MIR64-NEXT: - { id: 17, type: spill-slot, offset: -144, size: 8, alignment: 16, stack-id: default,
342; MIR64-NEXT:     callee-saved-register: '$f14', callee-saved-restored: true, debug-info-variable: '',
343; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
344; MIR64-NEXT: - { id: 18, type: spill-slot, offset: -152, size: 8, alignment: 8, stack-id: default,
345; MIR64-NEXT:     callee-saved-register: '$x31', callee-saved-restored: true, debug-info-variable: '',
346; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
347; MIR64-NEXT: - { id: 19, type: spill-slot, offset: -160, size: 8, alignment: 16, stack-id: default,
348; MIR64-NEXT:     callee-saved-register: '$x30', callee-saved-restored: true, debug-info-variable: '',
349; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
350; MIR64-NEXT: - { id: 20, type: spill-slot, offset: -168, size: 8, alignment: 8, stack-id: default,
351; MIR64-NEXT:     callee-saved-register: '$x29', callee-saved-restored: true, debug-info-variable: '',
352; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
353; MIR64-NEXT: - { id: 21, type: spill-slot, offset: -176, size: 8, alignment: 16, stack-id: default,
354; MIR64-NEXT:     callee-saved-register: '$x28', callee-saved-restored: true, debug-info-variable: '',
355; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
356; MIR64-NEXT: - { id: 22, type: spill-slot, offset: -184, size: 8, alignment: 8, stack-id: default,
357; MIR64-NEXT:     callee-saved-register: '$x27', callee-saved-restored: true, debug-info-variable: '',
358; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
359; MIR64-NEXT: - { id: 23, type: spill-slot, offset: -192, size: 8, alignment: 16, stack-id: default,
360; MIR64-NEXT:     callee-saved-register: '$x26', callee-saved-restored: true, debug-info-variable: '',
361; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
362; MIR64-NEXT: - { id: 24, type: spill-slot, offset: -200, size: 8, alignment: 8, stack-id: default,
363; MIR64-NEXT:     callee-saved-register: '$x25', callee-saved-restored: true, debug-info-variable: '',
364; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
365; MIR64-NEXT: - { id: 25, type: spill-slot, offset: -208, size: 8, alignment: 16, stack-id: default,
366; MIR64-NEXT:     callee-saved-register: '$x24', callee-saved-restored: true, debug-info-variable: '',
367; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
368; MIR64-NEXT: - { id: 26, type: spill-slot, offset: -216, size: 8, alignment: 8, stack-id: default,
369; MIR64-NEXT:     callee-saved-register: '$x23', callee-saved-restored: true, debug-info-variable: '',
370; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
371; MIR64-NEXT: - { id: 27, type: spill-slot, offset: -224, size: 8, alignment: 16, stack-id: default,
372; MIR64-NEXT:     callee-saved-register: '$x22', callee-saved-restored: true, debug-info-variable: '',
373; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
374; MIR64-NEXT: - { id: 28, type: spill-slot, offset: -232, size: 8, alignment: 8, stack-id: default,
375; MIR64-NEXT:     callee-saved-register: '$x21', callee-saved-restored: true, debug-info-variable: '',
376; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
377; MIR64-NEXT: - { id: 29, type: spill-slot, offset: -240, size: 8, alignment: 16, stack-id: default,
378; MIR64-NEXT:     callee-saved-register: '$x20', callee-saved-restored: true, debug-info-variable: '',
379; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
380; MIR64-NEXT: - { id: 30, type: spill-slot, offset: -248, size: 8, alignment: 8, stack-id: default,
381; MIR64-NEXT:     callee-saved-register: '$x19', callee-saved-restored: true, debug-info-variable: '',
382; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
383; MIR64-NEXT: - { id: 31, type: spill-slot, offset: -256, size: 8, alignment: 16, stack-id: default,
384; MIR64-NEXT:     callee-saved-register: '$x18', callee-saved-restored: true, debug-info-variable: '',
385; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
386; MIR64-NEXT: - { id: 32, type: spill-slot, offset: -264, size: 8, alignment: 8, stack-id: default,
387; MIR64-NEXT:     callee-saved-register: '$x17', callee-saved-restored: true, debug-info-variable: '',
388; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
389; MIR64-NEXT: - { id: 33, type: spill-slot, offset: -272, size: 8, alignment: 16, stack-id: default,
390; MIR64-NEXT:     callee-saved-register: '$x16', callee-saved-restored: true, debug-info-variable: '',
391; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
392; MIR64-NEXT: - { id: 34, type: spill-slot, offset: -280, size: 8, alignment: 8, stack-id: default,
393; MIR64-NEXT:     callee-saved-register: '$x15', callee-saved-restored: true, debug-info-variable: '',
394; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
395; MIR64-NEXT: - { id: 35, type: spill-slot, offset: -288, size: 8, alignment: 16, stack-id: default,
396; MIR64-NEXT:     callee-saved-register: '$x14', callee-saved-restored: true, debug-info-variable: '',
397; MIR64-NEXT:     debug-info-expression: '', debug-info-location: '' }
398; MIR64-NEXT:  stack:           []
399
400; MIR32:       name:            fprs_and_gprs
401; MIR32-LABEL: fixedStack:
402; MIR32-NEXT:  - { id: 0, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default,
403; MIR32-NEXT:      callee-saved-register: '$f31', callee-saved-restored: true, debug-info-variable: '',
404; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
405; MIR32-NEXT:  - { id: 1, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default,
406; MIR32-NEXT:      callee-saved-register: '$f30', callee-saved-restored: true, debug-info-variable: '',
407; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
408; MIR32-NEXT:  - { id: 2, type: spill-slot, offset: -24, size: 8, alignment: 8, stack-id: default,
409; MIR32-NEXT:      callee-saved-register: '$f29', callee-saved-restored: true, debug-info-variable: '',
410; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
411; MIR32-NEXT:  - { id: 3, type: spill-slot, offset: -32, size: 8, alignment: 16, stack-id: default,
412; MIR32-NEXT:      callee-saved-register: '$f28', callee-saved-restored: true, debug-info-variable: '',
413; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
414; MIR32-NEXT:  - { id: 4, type: spill-slot, offset: -40, size: 8, alignment: 8, stack-id: default,
415; MIR32-NEXT:      callee-saved-register: '$f27', callee-saved-restored: true, debug-info-variable: '',
416; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
417; MIR32-NEXT:  - { id: 5, type: spill-slot, offset: -48, size: 8, alignment: 16, stack-id: default,
418; MIR32-NEXT:      callee-saved-register: '$f26', callee-saved-restored: true, debug-info-variable: '',
419; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
420; MIR32-NEXT:  - { id: 6, type: spill-slot, offset: -56, size: 8, alignment: 8, stack-id: default,
421; MIR32-NEXT:      callee-saved-register: '$f25', callee-saved-restored: true, debug-info-variable: '',
422; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
423; MIR32-NEXT:  - { id: 7, type: spill-slot, offset: -64, size: 8, alignment: 16, stack-id: default,
424; MIR32-NEXT:      callee-saved-register: '$f24', callee-saved-restored: true, debug-info-variable: '',
425; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
426; MIR32-NEXT:  - { id: 8, type: spill-slot, offset: -72, size: 8, alignment: 8, stack-id: default,
427; MIR32-NEXT:      callee-saved-register: '$f23', callee-saved-restored: true, debug-info-variable: '',
428; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
429; MIR32-NEXT:  - { id: 9, type: spill-slot, offset: -80, size: 8, alignment: 16, stack-id: default,
430; MIR32-NEXT:      callee-saved-register: '$f22', callee-saved-restored: true, debug-info-variable: '',
431; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
432; MIR32-NEXT:  - { id: 10, type: spill-slot, offset: -88, size: 8, alignment: 8, stack-id: default,
433; MIR32-NEXT:      callee-saved-register: '$f21', callee-saved-restored: true, debug-info-variable: '',
434; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
435; MIR32-NEXT:  - { id: 11, type: spill-slot, offset: -96, size: 8, alignment: 16, stack-id: default,
436; MIR32-NEXT:      callee-saved-register: '$f20', callee-saved-restored: true, debug-info-variable: '',
437; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
438; MIR32-NEXT:  - { id: 12, type: spill-slot, offset: -104, size: 8, alignment: 8, stack-id: default,
439; MIR32-NEXT:      callee-saved-register: '$f19', callee-saved-restored: true, debug-info-variable: '',
440; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
441; MIR32-NEXT:  - { id: 13, type: spill-slot, offset: -112, size: 8, alignment: 16, stack-id: default,
442; MIR32-NEXT:      callee-saved-register: '$f18', callee-saved-restored: true, debug-info-variable: '',
443; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
444; MIR32-NEXT:  - { id: 14, type: spill-slot, offset: -120, size: 8, alignment: 8, stack-id: default,
445; MIR32-NEXT:      callee-saved-register: '$f17', callee-saved-restored: true, debug-info-variable: '',
446; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
447; MIR32-NEXT:  - { id: 15, type: spill-slot, offset: -128, size: 8, alignment: 16, stack-id: default,
448; MIR32-NEXT:      callee-saved-register: '$f16', callee-saved-restored: true, debug-info-variable: '',
449; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
450; MIR32-NEXT:  - { id: 16, type: spill-slot, offset: -136, size: 8, alignment: 8, stack-id: default,
451; MIR32-NEXT:      callee-saved-register: '$f15', callee-saved-restored: true, debug-info-variable: '',
452; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
453; MIR32-NEXT:  - { id: 17, type: spill-slot, offset: -144, size: 8, alignment: 16, stack-id: default,
454; MIR32-NEXT:      callee-saved-register: '$f14', callee-saved-restored: true, debug-info-variable: '',
455; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
456; MIR32-NEXT:  - { id: 18, type: spill-slot, offset: -148, size: 4, alignment: 4, stack-id: default,
457; MIR32-NEXT:      callee-saved-register: '$r31', callee-saved-restored: true, debug-info-variable: '',
458; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
459; MIR32-NEXT:  - { id: 19, type: spill-slot, offset: -152, size: 4, alignment: 8, stack-id: default,
460; MIR32-NEXT:      callee-saved-register: '$r30', callee-saved-restored: true, debug-info-variable: '',
461; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
462; MIR32-NEXT:  - { id: 20, type: spill-slot, offset: -156, size: 4, alignment: 4, stack-id: default,
463; MIR32-NEXT:      callee-saved-register: '$r29', callee-saved-restored: true, debug-info-variable: '',
464; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
465; MIR32-NEXT:  - { id: 21, type: spill-slot, offset: -160, size: 4, alignment: 16, stack-id: default,
466; MIR32-NEXT:      callee-saved-register: '$r28', callee-saved-restored: true, debug-info-variable: '',
467; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
468; MIR32-NEXT:  - { id: 22, type: spill-slot, offset: -164, size: 4, alignment: 4, stack-id: default,
469; MIR32-NEXT:      callee-saved-register: '$r27', callee-saved-restored: true, debug-info-variable: '',
470; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
471; MIR32-NEXT:  - { id: 23, type: spill-slot, offset: -168, size: 4, alignment: 8, stack-id: default,
472; MIR32-NEXT:      callee-saved-register: '$r26', callee-saved-restored: true, debug-info-variable: '',
473; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
474; MIR32-NEXT:  - { id: 24, type: spill-slot, offset: -172, size: 4, alignment: 4, stack-id: default,
475; MIR32-NEXT:      callee-saved-register: '$r25', callee-saved-restored: true, debug-info-variable: '',
476; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
477; MIR32-NEXT:  - { id: 25, type: spill-slot, offset: -176, size: 4, alignment: 16, stack-id: default,
478; MIR32-NEXT:      callee-saved-register: '$r24', callee-saved-restored: true, debug-info-variable: '',
479; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
480; MIR32-NEXT:  - { id: 26, type: spill-slot, offset: -180, size: 4, alignment: 4, stack-id: default,
481; MIR32-NEXT:      callee-saved-register: '$r23', callee-saved-restored: true, debug-info-variable: '',
482; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
483; MIR32-NEXT:  - { id: 27, type: spill-slot, offset: -184, size: 4, alignment: 8, stack-id: default,
484; MIR32-NEXT:      callee-saved-register: '$r22', callee-saved-restored: true, debug-info-variable: '',
485; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
486; MIR32-NEXT:  - { id: 28, type: spill-slot, offset: -188, size: 4, alignment: 4, stack-id: default,
487; MIR32-NEXT:      callee-saved-register: '$r21', callee-saved-restored: true, debug-info-variable: '',
488; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
489; MIR32-NEXT:  - { id: 29, type: spill-slot, offset: -192, size: 4, alignment: 16, stack-id: default,
490; MIR32-NEXT:      callee-saved-register: '$r20', callee-saved-restored: true, debug-info-variable: '',
491; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
492; MIR32-NEXT:  - { id: 30, type: spill-slot, offset: -196, size: 4, alignment: 4, stack-id: default,
493; MIR32-NEXT:      callee-saved-register: '$r19', callee-saved-restored: true, debug-info-variable: '',
494; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
495; MIR32-NEXT:  - { id: 31, type: spill-slot, offset: -200, size: 4, alignment: 8, stack-id: default,
496; MIR32-NEXT:      callee-saved-register: '$r18', callee-saved-restored: true, debug-info-variable: '',
497; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
498; MIR32-NEXT:  - { id: 32, type: spill-slot, offset: -204, size: 4, alignment: 4, stack-id: default,
499; MIR32-NEXT:      callee-saved-register: '$r17', callee-saved-restored: true, debug-info-variable: '',
500; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
501; MIR32-NEXT:  - { id: 33, type: spill-slot, offset: -208, size: 4, alignment: 16, stack-id: default,
502; MIR32-NEXT:      callee-saved-register: '$r16', callee-saved-restored: true, debug-info-variable: '',
503; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
504; MIR32-NEXT:  - { id: 34, type: spill-slot, offset: -212, size: 4, alignment: 4, stack-id: default,
505; MIR32-NEXT:      callee-saved-register: '$r15', callee-saved-restored: true, debug-info-variable: '',
506; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
507; MIR32-NEXT:  - { id: 35, type: spill-slot, offset: -216, size: 4, alignment: 8, stack-id: default,
508; MIR32-NEXT:      callee-saved-register: '$r14', callee-saved-restored: true, debug-info-variable: '',
509; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
510; MIR32-NEXT:  - { id: 36, type: spill-slot, offset: -220, size: 4, alignment: 4, stack-id: default,
511; MIR32-NEXT:      callee-saved-register: '$r13', callee-saved-restored: true, debug-info-variable: '',
512; MIR32-NEXT:      debug-info-expression: '', debug-info-location: '' }
513; MIR32-NEXT:  stack:           []
514
515
516; MIR64: liveins: $x3, $x14, $x15, $x16, $x17, $x18, $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $x29, $x30, $x31, $f14, $f15, $f16, $f17, $f18, $f19, $f20, $f21, $f22, $f23, $f24, $f25, $f26, $f27, $f28, $f29, $f30, $f31
517
518; MIR64:       $x0 = MFLR8 implicit $lr8
519; MIR64-NEXT:  $x1 = STDU $x1, -400, $x1
520; MIR64-NEXT:  STD killed $x0, 416, $x1
521; MIR64-DAG:   STD killed $x14, 112, $x1 :: (store (s64) into %fixed-stack.35, align 16)
522; MIR64-DAG:   STD killed $x15, 120, $x1 :: (store (s64) into %fixed-stack.34)
523; MIR64-DAG:   STD killed $x16, 128, $x1 :: (store (s64) into %fixed-stack.33, align 16)
524; MIR64-DAG:   STD killed $x17, 136, $x1 :: (store (s64) into %fixed-stack.32)
525; MIR64-DAG:   STD killed $x18, 144, $x1 :: (store (s64) into %fixed-stack.31, align 16)
526; MIR64-DAG:   STD killed $x19, 152, $x1 :: (store (s64) into %fixed-stack.30)
527; MIR64-DAG:   STD killed $x20, 160, $x1 :: (store (s64) into %fixed-stack.29, align 16)
528; MIR64-DAG:   STD killed $x21, 168, $x1 :: (store (s64) into %fixed-stack.28)
529; MIR64-DAG:   STD killed $x22, 176, $x1 :: (store (s64) into %fixed-stack.27, align 16)
530; MIR64-DAG:   STD killed $x23, 184, $x1 :: (store (s64) into %fixed-stack.26)
531; MIR64-DAG:   STD killed $x24, 192, $x1 :: (store (s64) into %fixed-stack.25, align 16)
532; MIR64-DAG:   STD killed $x25, 200, $x1 :: (store (s64) into %fixed-stack.24)
533; MIR64-DAG:   STD killed $x26, 208, $x1 :: (store (s64) into %fixed-stack.23, align 16)
534; MIR64-DAG:   STD killed $x27, 216, $x1 :: (store (s64) into %fixed-stack.22)
535; MIR64-DAG:   STD killed $x28, 224, $x1 :: (store (s64) into %fixed-stack.21, align 16)
536; MIR64-DAG:   STD killed $x29, 232, $x1 :: (store (s64) into %fixed-stack.20)
537; MIR64-DAG:   STD killed $x30, 240, $x1 :: (store (s64) into %fixed-stack.19, align 16)
538; MIR64-DAG:   STD killed $x31, 248, $x1 :: (store (s64) into %fixed-stack.18)
539; MIR64-DAG:   STFD killed $f14, 256, $x1 :: (store (s64) into %fixed-stack.17, align 16)
540; MIR64-DAG:   STFD killed $f15, 264, $x1 :: (store (s64) into %fixed-stack.16)
541; MIR64-DAG:   STFD killed $f16, 272, $x1 :: (store (s64) into %fixed-stack.15, align 16)
542; MIR64-DAG:   STFD killed $f17, 280, $x1 :: (store (s64) into %fixed-stack.14)
543; MIR64-DAG:   STFD killed $f18, 288, $x1 :: (store (s64) into %fixed-stack.13, align 16)
544; MIR64-DAG:   STFD killed $f19, 296, $x1 :: (store (s64) into %fixed-stack.12)
545; MIR64-DAG:   STFD killed $f20, 304, $x1 :: (store (s64) into %fixed-stack.11, align 16)
546; MIR64-DAG:   STFD killed $f21, 312, $x1 :: (store (s64) into %fixed-stack.10)
547; MIR64-DAG:   STFD killed $f22, 320, $x1 :: (store (s64) into %fixed-stack.9, align 16)
548; MIR64-DAG:   STFD killed $f23, 328, $x1 :: (store (s64) into %fixed-stack.8)
549; MIR64-DAG:   STFD killed $f24, 336, $x1 :: (store (s64) into %fixed-stack.7, align 16)
550; MIR64-DAG:   STFD killed $f25, 344, $x1 :: (store (s64) into %fixed-stack.6)
551; MIR64-DAG:   STFD killed $f26, 352, $x1 :: (store (s64) into %fixed-stack.5, align 16)
552; MIR64-DAG:   STFD killed $f27, 360, $x1 :: (store (s64) into %fixed-stack.4)
553; MIR64-DAG:   STFD killed $f28, 368, $x1 :: (store (s64) into %fixed-stack.3, align 16)
554; MIR64-DAG:   STFD killed $f29, 376, $x1 :: (store (s64) into %fixed-stack.2)
555; MIR64-DAG:   STFD killed $f30, 384, $x1 :: (store (s64) into %fixed-stack.1, align 16)
556; MIR64-DAG:   STFD killed $f31, 392, $x1 :: (store (s64) into %fixed-stack.0)
557
558; MIR64:       INLINEASM
559; MIR64-NEXT:  BL8_NOP
560
561; MIR64-DAG:   $f31 = LFD 392, $x1 :: (load (s64) from %fixed-stack.0)
562; MIR64-DAG:   $f30 = LFD 384, $x1 :: (load (s64) from %fixed-stack.1, align 16)
563; MIR64-DAG:   $f29 = LFD 376, $x1 :: (load (s64) from %fixed-stack.2)
564; MIR64-DAG:   $f28 = LFD 368, $x1 :: (load (s64) from %fixed-stack.3, align 16)
565; MIR64-DAG:   $f27 = LFD 360, $x1 :: (load (s64) from %fixed-stack.4)
566; MIR64-DAG:   $f26 = LFD 352, $x1 :: (load (s64) from %fixed-stack.5, align 16)
567; MIR64-DAG:   $f25 = LFD 344, $x1 :: (load (s64) from %fixed-stack.6)
568; MIR64-DAG:   $f24 = LFD 336, $x1 :: (load (s64) from %fixed-stack.7, align 16)
569; MIR64-DAG:   $f23 = LFD 328, $x1 :: (load (s64) from %fixed-stack.8)
570; MIR64-DAG:   $f22 = LFD 320, $x1 :: (load (s64) from %fixed-stack.9, align 16)
571; MIR64-DAG:   $f21 = LFD 312, $x1 :: (load (s64) from %fixed-stack.10)
572; MIR64-DAG:   $f20 = LFD 304, $x1 :: (load (s64) from %fixed-stack.11, align 16)
573; MIR64-DAG:   $f19 = LFD 296, $x1 :: (load (s64) from %fixed-stack.12)
574; MIR64-DAG:   $f18 = LFD 288, $x1 :: (load (s64) from %fixed-stack.13, align 16)
575; MIR64-DAG:   $f17 = LFD 280, $x1 :: (load (s64) from %fixed-stack.14)
576; MIR64-DAG:   $f16 = LFD 272, $x1 :: (load (s64) from %fixed-stack.15, align 16)
577; MIR64-DAG:   $f15 = LFD 264, $x1 :: (load (s64) from %fixed-stack.16)
578; MIR64-DAG:   $f14 = LFD 256, $x1 :: (load (s64) from %fixed-stack.17, align 16)
579; MIR64-DAG:   $x31 = LD 248, $x1 :: (load (s64) from %fixed-stack.18)
580; MIR64-DAG:   $x30 = LD 240, $x1 :: (load (s64) from %fixed-stack.19, align 16)
581; MIR64-DAG:   $x29 = LD 232, $x1 :: (load (s64) from %fixed-stack.20)
582; MIR64-DAG:   $x28 = LD 224, $x1 :: (load (s64) from %fixed-stack.21, align 16)
583; MIR64-DAG:   $x27 = LD 216, $x1 :: (load (s64) from %fixed-stack.22)
584; MIR64-DAG:   $x26 = LD 208, $x1 :: (load (s64) from %fixed-stack.23, align 16)
585; MIR64-DAG:   $x25 = LD 200, $x1 :: (load (s64) from %fixed-stack.24)
586; MIR64-DAG:   $x24 = LD 192, $x1 :: (load (s64) from %fixed-stack.25, align 16)
587; MIR64-DAG:   $x23 = LD 184, $x1 :: (load (s64) from %fixed-stack.26)
588; MIR64-DAG:   $x22 = LD 176, $x1 :: (load (s64) from %fixed-stack.27, align 16)
589; MIR64-DAG:   $x21 = LD 168, $x1 :: (load (s64) from %fixed-stack.28)
590; MIR64-DAG:   $x20 = LD 160, $x1 :: (load (s64) from %fixed-stack.29, align 16)
591; MIR64-DAG:   $x19 = LD 152, $x1 :: (load (s64) from %fixed-stack.30)
592; MIR64-DAG:   $x18 = LD 144, $x1 :: (load (s64) from %fixed-stack.31, align 16)
593; MIR64-DAG:   $x17 = LD 136, $x1 :: (load (s64) from %fixed-stack.32)
594; MIR64-DAG:   $x16 = LD 128, $x1 :: (load (s64) from %fixed-stack.33, align 16)
595; MIR64-DAG:   $x15 = LD 120, $x1 :: (load (s64) from %fixed-stack.34)
596; MIR64-DAG:   $x14 = LD 112, $x1 :: (load (s64) from %fixed-stack.35, align 16)
597
598; MIR64:       $x1 = ADDI8 $x1, 400
599; MIR64-NEXT:  $x0 = LD 16, $x1
600; MIR64-NEXT:  MTLR8 $x0, implicit-def $lr8
601; MIR64-NEXT:  BLR8 implicit $lr8, implicit $rm, implicit $f1
602
603; MIR32: liveins: $r3, $r13, $r14, $r15, $r16, $r17, $r18, $r19, $r20, $r21, $r22, $r23, $r24, $r25, $r26, $r27, $r28, $r29, $r30, $r31, $f14, $f15, $f16, $f17, $f18, $f19, $f20, $f21, $f22, $f23, $f24, $f25, $f26, $f27, $f28, $f29, $f30, $f31
604
605; MIR32:      $r0 = MFLR implicit $lr
606; MIR32-NEXT: $r1 = STWU $r1, -288, $r1
607; MIR32-NEXT: STW killed $r0, 296, $r1
608; MIR32-DAG:  STW killed $r13, 68, $r1 :: (store (s32) into %fixed-stack.36)
609; MIR32-DAG:  STW killed $r14, 72, $r1 :: (store (s32) into %fixed-stack.35, align 8)
610; MIR32-DAG:  STW killed $r15, 76, $r1 :: (store (s32) into %fixed-stack.34)
611; MIR32-DAG:  STW killed $r16, 80, $r1 :: (store (s32) into %fixed-stack.33, align 16)
612; MIR32-DAG:  STW killed $r17, 84, $r1 :: (store (s32) into %fixed-stack.32)
613; MIR32-DAG:  STW killed $r18, 88, $r1 :: (store (s32) into %fixed-stack.31, align 8)
614; MIR32-DAG:  STW killed $r19, 92, $r1 :: (store (s32) into %fixed-stack.30)
615; MIR32-DAG:  STW killed $r20, 96, $r1 :: (store (s32) into %fixed-stack.29, align 16)
616; MIR32-DAG:  STW killed $r21, 100, $r1 :: (store (s32) into %fixed-stack.28)
617; MIR32-DAG:  STW killed $r22, 104, $r1 :: (store (s32) into %fixed-stack.27, align 8)
618; MIR32-DAG:  STW killed $r23, 108, $r1 :: (store (s32) into %fixed-stack.26)
619; MIR32-DAG:  STW killed $r24, 112, $r1 :: (store (s32) into %fixed-stack.25, align 16)
620; MIR32-DAG:  STW killed $r25, 116, $r1 :: (store (s32) into %fixed-stack.24)
621; MIR32-DAG:  STW killed $r26, 120, $r1 :: (store (s32) into %fixed-stack.23, align 8)
622; MIR32-DAG:  STW killed $r27, 124, $r1 :: (store (s32) into %fixed-stack.22)
623; MIR32-DAG:  STW killed $r28, 128, $r1 :: (store (s32) into %fixed-stack.21, align 16)
624; MIR32-DAG:  STW killed $r29, 132, $r1 :: (store (s32) into %fixed-stack.20)
625; MIR32-DAG:  STW killed $r30, 136, $r1 :: (store (s32) into %fixed-stack.19, align 8)
626; MIR32-DAG:  STW killed $r31, 140, $r1 :: (store (s32) into %fixed-stack.18)
627; MIR32-DAG:  STFD killed $f14, 144, $r1 :: (store (s64) into %fixed-stack.17, align 16)
628; MIR32-DAG:  STFD killed $f15, 152, $r1 :: (store (s64) into %fixed-stack.16)
629; MIR32-DAG:  STFD killed $f16, 160, $r1 :: (store (s64) into %fixed-stack.15, align 16)
630; MIR32-DAG:  STFD killed $f17, 168, $r1 :: (store (s64) into %fixed-stack.14)
631; MIR32-DAG:  STFD killed $f18, 176, $r1 :: (store (s64) into %fixed-stack.13, align 16)
632; MIR32-DAG:  STFD killed $f19, 184, $r1 :: (store (s64) into %fixed-stack.12)
633; MIR32-DAG:  STFD killed $f20, 192, $r1 :: (store (s64) into %fixed-stack.11, align 16)
634; MIR32-DAG:  STFD killed $f21, 200, $r1 :: (store (s64) into %fixed-stack.10)
635; MIR32-DAG:  STFD killed $f22, 208, $r1 :: (store (s64) into %fixed-stack.9, align 16)
636; MIR32-DAG:  STFD killed $f23, 216, $r1 :: (store (s64) into %fixed-stack.8)
637; MIR32-DAG:  STFD killed $f24, 224, $r1 :: (store (s64) into %fixed-stack.7, align 16)
638; MIR32-DAG:  STFD killed $f25, 232, $r1 :: (store (s64) into %fixed-stack.6)
639; MIR32-DAG:  STFD killed $f26, 240, $r1 :: (store (s64) into %fixed-stack.5, align 16)
640; MIR32-DAG:  STFD killed $f27, 248, $r1 :: (store (s64) into %fixed-stack.4)
641; MIR32-DAG:  STFD killed $f28, 256, $r1 :: (store (s64) into %fixed-stack.3, align 16)
642; MIR32-DAG:  STFD killed $f29, 264, $r1 :: (store (s64) into %fixed-stack.2)
643; MIR32-DAG:  STFD killed $f30, 272, $r1 :: (store (s64) into %fixed-stack.1, align 16)
644; MIR32-DAG:  STFD killed $f31, 280, $r1 :: (store (s64) into %fixed-stack.0)
645
646; MIR32:      INLINEASM
647; MIR32:      BL_NOP
648
649; MIR32-DAG:  $f31 = LFD 280, $r1 :: (load (s64) from %fixed-stack.0)
650; MIR32-DAG:  $f30 = LFD 272, $r1 :: (load (s64) from %fixed-stack.1, align 16)
651; MIR32-DAG:  $f29 = LFD 264, $r1 :: (load (s64) from %fixed-stack.2)
652; MIR32-DAG:  $f28 = LFD 256, $r1 :: (load (s64) from %fixed-stack.3, align 16)
653; MIR32-DAG:  $f27 = LFD 248, $r1 :: (load (s64) from %fixed-stack.4)
654; MIR32-DAG:  $f26 = LFD 240, $r1 :: (load (s64) from %fixed-stack.5, align 16)
655; MIR32-DAG:  $f25 = LFD 232, $r1 :: (load (s64) from %fixed-stack.6)
656; MIR32-DAG:  $f24 = LFD 224, $r1 :: (load (s64) from %fixed-stack.7, align 16)
657; MIR32-DAG:  $f23 = LFD 216, $r1 :: (load (s64) from %fixed-stack.8)
658; MIR32-DAG:  $f22 = LFD 208, $r1 :: (load (s64) from %fixed-stack.9, align 16)
659; MIR32-DAG:  $f21 = LFD 200, $r1 :: (load (s64) from %fixed-stack.10)
660; MIR32-DAG:  $f20 = LFD 192, $r1 :: (load (s64) from %fixed-stack.11, align 16)
661; MIR32-DAG:  $f19 = LFD 184, $r1 :: (load (s64) from %fixed-stack.12)
662; MIR32-DAG:  $f18 = LFD 176, $r1 :: (load (s64) from %fixed-stack.13, align 16)
663; MIR32-DAG:  $f17 = LFD 168, $r1 :: (load (s64) from %fixed-stack.14)
664; MIR32-DAG:  $f16 = LFD 160, $r1 :: (load (s64) from %fixed-stack.15, align 16)
665; MIR32-DAG:  $f15 = LFD 152, $r1 :: (load (s64) from %fixed-stack.16)
666; MIR32-DAG:  $f14 = LFD 144, $r1 :: (load (s64) from %fixed-stack.17, align 16)
667; MIR32-DAG:  $r31 = LWZ 140, $r1 :: (load (s32) from %fixed-stack.18)
668; MIR32-DAG:  $r30 = LWZ 136, $r1 :: (load (s32) from %fixed-stack.19, align 8)
669; MIR32-DAG:  $r29 = LWZ 132, $r1 :: (load (s32) from %fixed-stack.20)
670; MIR32-DAG:  $r28 = LWZ 128, $r1 :: (load (s32) from %fixed-stack.21, align 16)
671; MIR32-DAG:  $r27 = LWZ 124, $r1 :: (load (s32) from %fixed-stack.22)
672; MIR32-DAG:  $r26 = LWZ 120, $r1 :: (load (s32) from %fixed-stack.23, align 8)
673; MIR32-DAG:  $r25 = LWZ 116, $r1 :: (load (s32) from %fixed-stack.24)
674; MIR32-DAG:  $r24 = LWZ 112, $r1 :: (load (s32) from %fixed-stack.25, align 16)
675; MIR32-DAG:  $r23 = LWZ 108, $r1 :: (load (s32) from %fixed-stack.26)
676; MIR32-DAG:  $r22 = LWZ 104, $r1 :: (load (s32) from %fixed-stack.27, align 8)
677; MIR32-DAG:  $r21 = LWZ 100, $r1 :: (load (s32) from %fixed-stack.28)
678; MIR32-DAG:  $r20 = LWZ 96, $r1 :: (load (s32) from %fixed-stack.29, align 16)
679; MIR32-DAG:  $r19 = LWZ 92, $r1 :: (load (s32) from %fixed-stack.30)
680; MIR32-DAG:  $r18 = LWZ 88, $r1 :: (load (s32) from %fixed-stack.31, align 8)
681; MIR32-DAG:  $r17 = LWZ 84, $r1 :: (load (s32) from %fixed-stack.32)
682; MIR32-DAG:  $r16 = LWZ 80, $r1 :: (load (s32) from %fixed-stack.33, align 16)
683; MIR32-DAG:  $r15 = LWZ 76, $r1 :: (load (s32) from %fixed-stack.34)
684; MIR32-DAG:  $r14 = LWZ 72, $r1 :: (load (s32) from %fixed-stack.35, align 8)
685; MIR32-DAG:  $r13 = LWZ 68, $r1 :: (load (s32) from %fixed-stack.36)
686; MIR32:      $r1 = ADDI $r1, 288
687; MIR32-NEXT: $r0 = LWZ 8, $r1
688; MIR32-NEXT: MTLR $r0, implicit-def $lr
689; MIR32-NEXT: BLR implicit $lr, implicit $rm, implicit $f1
690
691; ASM64-LABEL: .fprs_and_gprs:
692; ASM64:         mflr 0
693; ASM64-NEXT:    stdu 1, -400(1)
694; ASM64-NEXT:    std 0, 416(1)
695; ASM64-DAG:     std 14, 112(1)                          # 8-byte Folded Spill
696; ASM64-DAG:     std 15, 120(1)                          # 8-byte Folded Spill
697; ASM64-DAG:     std 16, 128(1)                          # 8-byte Folded Spill
698; ASM64-DAG:     std 17, 136(1)                          # 8-byte Folded Spill
699; ASM64-DAG:     std 18, 144(1)                          # 8-byte Folded Spill
700; ASM64-DAG:     std 19, 152(1)                          # 8-byte Folded Spill
701; ASM64-DAG:     std 20, 160(1)                          # 8-byte Folded Spill
702; ASM64-DAG:     std 21, 168(1)                          # 8-byte Folded Spill
703; ASM64-DAG:     std 22, 176(1)                          # 8-byte Folded Spill
704; ASM64-DAG:     std 23, 184(1)                          # 8-byte Folded Spill
705; ASM64-DAG:     std 24, 192(1)                          # 8-byte Folded Spill
706; ASM64-DAG:     std 25, 200(1)                          # 8-byte Folded Spill
707; ASM64-DAG:     std 26, 208(1)                          # 8-byte Folded Spill
708; ASM64-DAG:     std 27, 216(1)                          # 8-byte Folded Spill
709; ASM64-DAG:     std 28, 224(1)                          # 8-byte Folded Spill
710; ASM64-DAG:     std 29, 232(1)                          # 8-byte Folded Spill
711; ASM64-DAG:     std 30, 240(1)                          # 8-byte Folded Spill
712; ASM64-DAG:     std 31, 248(1)                          # 8-byte Folded Spill
713; ASM64-DAG:     stfd 14, 256(1)                         # 8-byte Folded Spill
714; ASM64-DAG:     stfd 15, 264(1)                         # 8-byte Folded Spill
715; ASM64-DAG:     stfd 16, 272(1)                         # 8-byte Folded Spill
716; ASM64-DAG:     stfd 17, 280(1)                         # 8-byte Folded Spill
717; ASM64-DAG:     stfd 18, 288(1)                         # 8-byte Folded Spill
718; ASM64-DAG:     stfd 19, 296(1)                         # 8-byte Folded Spill
719; ASM64-DAG:     stfd 20, 304(1)                         # 8-byte Folded Spill
720; ASM64-DAG:     stfd 21, 312(1)                         # 8-byte Folded Spill
721; ASM64-DAG:     stfd 22, 320(1)                         # 8-byte Folded Spill
722; ASM64-DAG:     stfd 23, 328(1)                         # 8-byte Folded Spill
723; ASM64-DAG:     stfd 24, 336(1)                         # 8-byte Folded Spill
724; ASM64-DAG:     stfd 25, 344(1)                         # 8-byte Folded Spill
725; ASM64-DAG:     stfd 26, 352(1)                         # 8-byte Folded Spill
726; ASM64-DAG:     stfd 27, 360(1)                         # 8-byte Folded Spill
727; ASM64-DAG:     stfd 28, 368(1)                         # 8-byte Folded Spill
728; ASM64-DAG:     stfd 29, 376(1)                         # 8-byte Folded Spill
729; ASM64-DAG:     stfd 30, 384(1)                         # 8-byte Folded Spill
730; ASM64-DAG:     stfd 31, 392(1)                         # 8-byte Folded Spill
731
732; ASM64:         bl .dummy
733; ASM64-DAG:     lfd 31, 392(1)                          # 8-byte Folded Reload
734; ASM64-DAG:     lfd 30, 384(1)                          # 8-byte Folded Reload
735; ASM64-DAG:     lfd 29, 376(1)                          # 8-byte Folded Reload
736; ASM64-DAG:     lfd 28, 368(1)                          # 8-byte Folded Reload
737; ASM64-DAG:     lfd 27, 360(1)                          # 8-byte Folded Reload
738; ASM64-DAG:     lfd 26, 352(1)                          # 8-byte Folded Reload
739; ASM64-DAG:     lfd 25, 344(1)                          # 8-byte Folded Reload
740; ASM64-DAG:     lfd 24, 336(1)                          # 8-byte Folded Reload
741; ASM64-DAG:     lfd 23, 328(1)                          # 8-byte Folded Reload
742; ASM64-DAG:     lfd 22, 320(1)                          # 8-byte Folded Reload
743; ASM64-DAG:     lfd 21, 312(1)                          # 8-byte Folded Reload
744; ASM64-DAG:     lfd 20, 304(1)                          # 8-byte Folded Reload
745; ASM64-DAG:     lfd 19, 296(1)                          # 8-byte Folded Reload
746; ASM64-DAG:     lfd 18, 288(1)                          # 8-byte Folded Reload
747; ASM64-DAG:     lfd 17, 280(1)                          # 8-byte Folded Reload
748; ASM64-DAG:     lfd 16, 272(1)                          # 8-byte Folded Reload
749; ASM64-DAG:     lfd 15, 264(1)                          # 8-byte Folded Reload
750; ASM64-DAG:     lfd 14, 256(1)                          # 8-byte Folded Reload
751; ASM64-DAG:     ld 31, 248(1)                           # 8-byte Folded Reload
752; ASM64-DAG:     ld 30, 240(1)                           # 8-byte Folded Reload
753; ASM64-DAG:     ld 29, 232(1)                           # 8-byte Folded Reload
754; ASM64-DAG:     ld 28, 224(1)                           # 8-byte Folded Reload
755; ASM64-DAG:     ld 27, 216(1)                           # 8-byte Folded Reload
756; ASM64-DAG:     ld 26, 208(1)                           # 8-byte Folded Reload
757; ASM64-DAG:     ld 25, 200(1)                           # 8-byte Folded Reload
758; ASM64-DAG:     ld 24, 192(1)                           # 8-byte Folded Reload
759; ASM64-DAG:     ld 23, 184(1)                           # 8-byte Folded Reload
760; ASM64-DAG:     ld 22, 176(1)                           # 8-byte Folded Reload
761; ASM64-DAG:     ld 21, 168(1)                           # 8-byte Folded Reload
762; ASM64-DAG:     ld 20, 160(1)                           # 8-byte Folded Reload
763; ASM64-DAG:     ld 19, 152(1)                           # 8-byte Folded Reload
764; ASM64-DAG:     ld 18, 144(1)                           # 8-byte Folded Reload
765; ASM64-DAG:     ld 17, 136(1)                           # 8-byte Folded Reload
766; ASM64-DAG:     ld 16, 128(1)                           # 8-byte Folded Reload
767; ASM64-DAG:     ld 15, 120(1)                           # 8-byte Folded Reload
768; ASM64-DAG:     ld 14, 112(1)                           # 8-byte Folded Reload
769
770; ASM64:         addi 1, 1, 400
771; ASM64-NEXT:    ld 0, 16(1)
772; ASM64-NEXT:    mtlr 0
773; ASM64-NEXT:    blr
774
775; ASM32-LABEL: .fprs_and_gprs:
776; ASM32:         mflr 0
777; ASM32-NEXT:    stwu 1, -288(1)
778; ASM32-NEXT:    stw 0, 296(1)
779; ASM32-DAG:     stw 13, 68(1)                   # 4-byte Folded Spill
780; ASM32-DAG:     stw 14, 72(1)                   # 4-byte Folded Spill
781; ASM32-DAG:     stw 25, 116(1)                  # 4-byte Folded Spill
782; ASM32-DAG:     stw 31, 140(1)                  # 4-byte Folded Spill
783; ASM32-DAG:     stfd 14, 144(1)                 # 8-byte Folded Spill
784; ASM32-DAG:     stfd 19, 184(1)                 # 8-byte Folded Spill
785; ASM32-DAG:     stfd 21, 200(1)                 # 8-byte Folded Spill
786; ASM32-DAG:     stfd 31, 280(1)                 # 8-byte Folded Spill
787
788; ASM32-DAG:     bl .dummy
789
790; ASM32-DAG:     lfd 31, 280(1)                  # 8-byte Folded Reload
791; ASM32-DAG:     lfd 21, 200(1)                  # 8-byte Folded Reload
792; ASM32-DAG:     lfd 19, 184(1)                  # 8-byte Folded Reload
793; ASM32-DAG:     lfd 14, 144(1)                  # 8-byte Folded Reload
794; ASM32-DAG:     lwz 31, 140(1)                  # 4-byte Folded Reload
795; ASM32-DAG:     lwz 25, 116(1)                  # 4-byte Folded Reload
796; ASM32-DAG:     lwz 14, 72(1)                   # 4-byte Folded Reload
797; ASM32-DAG:     lwz 13, 68(1)                   # 4-byte Folded Reload
798; ASM32:         addi 1, 1, 288
799; ASM32-NEXT:    lwz 0, 8(1)
800; ASM32-NEXT:    mtlr 0
801; ASM32-NEXT:    blr
802