1 ; RUN: llc -mtriple=powerpc-unknown-aix-xcoff -vec-extabi -verify-machineinstrs -mcpu=pwr7 \
2 ; RUN: -mattr=+altivec -stop-after=prologepilog < %s | \
3 ; RUN: FileCheck --check-prefix=MIR32 %s
5 ; RUN: llc -mtriple=powerpc-unknown-aix-xcoff -vec-extabi -verify-machineinstrs \
6 ; RUN: -mcpu=pwr7 -mattr=+altivec < %s | \
7 ; RUN: FileCheck --check-prefix=ASM32 %s
9 ; RUN: llc -mtriple=powerpc64-unknown-aix-xcoff -vec-extabi -verify-machineinstrs \
10 ; RUN: -mcpu=pwr7 -mattr=+altivec -stop-after=prologepilog < %s | \
11 ; RUN: FileCheck --check-prefix=MIR64 %s
13 ; RUN: llc -mtriple=powerpc64-unknown-aix-xcoff -vec-extabi -verify-machineinstrs \
14 ; RUN: -mcpu=pwr7 -mattr=+altivec < %s | \
15 ; RUN: FileCheck --check-prefix=ASM64 %s
18 define dso_local void @vec_regs() {
20 call void asm sideeffect "", "~{v13},~{v20},~{v26},~{v31}"()
24 ; MIR32: name: vec_regs
26 ; MIR32-LABEL: fixedStack:
27 ; MIR32-NEXT: - { id: 0, type: spill-slot, offset: -16, size: 16, alignment: 16, stack-id: default,
28 ; MIR32-NEXT: callee-saved-register: '$v31', callee-saved-restored: true, debug-info-variable: '',
29 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
30 ; MIR32-NEXT: - { id: 1, type: spill-slot, offset: -96, size: 16, alignment: 16, stack-id: default,
31 ; MIR32-NEXT: callee-saved-register: '$v26', callee-saved-restored: true, debug-info-variable: '',
32 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
33 ; MIR32-NEXT: - { id: 2, type: spill-slot, offset: -192, size: 16, alignment: 16, stack-id: default,
34 ; MIR32-NEXT: callee-saved-register: '$v20', callee-saved-restored: true, debug-info-variable: '',
35 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
38 ; MIR32: liveins: $v20, $v26, $v31
40 ; MIR32-DAG: STXVD2X killed $v20, $r1, killed $r{{[0-9]+}} :: (store (s128) into %fixed-stack.2)
41 ; MIR32-DAG: STXVD2X killed $v26, $r1, killed $r{{[0-9]+}} :: (store (s128) into %fixed-stack.1)
42 ; MIR32-DAG: STXVD2X killed $v31, $r1, killed $r{{[0-9]+}} :: (store (s128) into %fixed-stack.0)
46 ; MIR32-DAG: $v20 = LXVD2X $r1, killed $r{{[0-9]+}} :: (load (s128) from %fixed-stack.2)
47 ; MIR32-DAG: $v26 = LXVD2X $r1, killed $r{{[0-9]+}} :: (load (s128) from %fixed-stack.1)
48 ; MIR32-DAG: $v31 = LXVD2X $r1, killed $r{{[0-9]+}} :: (load (s128) from %fixed-stack.0)
49 ; MIR32: BLR implicit $lr, implicit $rm
51 ; MIR64: name: vec_regs
53 ; MIR64-LABEL: fixedStack:
54 ; MIR64-NEXT: - { id: 0, type: spill-slot, offset: -16, size: 16, alignment: 16, stack-id: default,
55 ; MIR64-NEXT: callee-saved-register: '$v31', callee-saved-restored: true, debug-info-variable: '',
56 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
57 ; MIR64-NEXT: - { id: 1, type: spill-slot, offset: -96, size: 16, alignment: 16, stack-id: default,
58 ; MIR64-NEXT: callee-saved-register: '$v26', callee-saved-restored: true, debug-info-variable: '',
59 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
60 ; MIR64-NEXT: - { id: 2, type: spill-slot, offset: -192, size: 16, alignment: 16, stack-id: default,
61 ; MIR64-NEXT: callee-saved-register: '$v20', callee-saved-restored: true, debug-info-variable: '',
62 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
65 ; MIR64: liveins: $v20, $v26, $v31
67 ; MIR64-DAG: STXVD2X killed $v20, $x1, killed $x{{[0-9]+}} :: (store (s128) into %fixed-stack.2)
68 ; MIR64-DAG: STXVD2X killed $v26, $x1, killed $x{{[0-9]+}} :: (store (s128) into %fixed-stack.1)
69 ; MIR64-DAG: STXVD2X killed $v31, $x1, killed $x{{[0-9]+}} :: (store (s128) into %fixed-stack.0)
73 ; MIR64-DAG: $v20 = LXVD2X $x1, killed $x{{[0-9]+}} :: (load (s128) from %fixed-stack.2)
74 ; MIR64-DAG: $v26 = LXVD2X $x1, killed $x{{[0-9]+}} :: (load (s128) from %fixed-stack.1)
75 ; MIR64-DAG: $v31 = LXVD2X $x1, killed $x{{[0-9]+}} :: (load (s128) from %fixed-stack.0)
76 ; MIR64: BLR8 implicit $lr8, implicit $rm
79 ; ASM32-LABEL: .vec_regs:
81 ; ASM32: li {{[0-9]+}}, -192
82 ; ASM32-DAG: stxvd2x 52, 1, {{[0-9]+}} # 16-byte Folded Spill
83 ; ASM32-DAG: li {{[0-9]+}}, -96
84 ; ASM32-DAG: stxvd2x 58, 1, {{[0-9]+}} # 16-byte Folded Spill
85 ; ASM32-DAG: li {{[0-9]+}}, -16
86 ; ASM32-DAG: stxvd2x 63, 1, {{[0-9]+}} # 16-byte Folded Spill
89 ; ASM32-DAG: lxvd2x 63, 1, {{[0-9]+}} # 16-byte Folded Reload
90 ; ASM32-DAG: li {{[0-9]+}}, -96
91 ; ASM32-DAG: lxvd2x 58, 1, {{[0-9]+}} # 16-byte Folded Reload
92 ; ASM32-DAG: li {{[0-9]+}}, -192
93 ; ASM32-DAG: lxvd2x 52, 1, {{[0-9]+}} # 16-byte Folded Reload
96 ; ASM64-LABEL: .vec_regs:
98 ; ASM64-DAG: li {{[0-9]+}}, -192
99 ; ASM64-DAG: stxvd2x 52, 1, {{[0-9]+}} # 16-byte Folded Spill
100 ; ASM64-DAG: li {{[0-9]+}}, -96
101 ; ASM64-DAG: stxvd2x 58, 1, {{[0-9]+}} # 16-byte Folded Spill
102 ; ASM64-DAG: li {{[0-9]+}}, -16
103 ; ASM64-DAG: stxvd2x {{[0-9]+}}, 1, {{[0-9]+}} # 16-byte Folded Spill
106 ; ASM64-DAG: lxvd2x {{[0-9]+}}, 1, {{[0-9]+}} # 16-byte Folded Reload
107 ; ASM64-DAG: li {{[0-9]+}}, -96
108 ; ASM64-DAG: lxvd2x 58, 1, {{[0-9]+}} # 16-byte Folded Reload
109 ; ASM64-DAG: li {{[0-9]+}}, -192
110 ; ASM64-DAG: lxvd2x 52, 1, {{[0-9]+}} # 16-byte Folded Reload
113 define dso_local void @fprs_gprs_vecregs() {
114 call void asm sideeffect "", "~{r14},~{r25},~{r31},~{f14},~{f21},~{f31},~{v20},~{v26},~{v31}"()
118 ; MIR32: name: fprs_gprs_vecregs
120 ; MIR32-LABEL: fixedStack:
121 ; MIR32-NEXT: - { id: 0, type: spill-slot, offset: -240, size: 16, alignment: 16, stack-id: default,
122 ; MIR32-NEXT: callee-saved-register: '$v31', callee-saved-restored: true, debug-info-variable: '',
123 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
124 ; MIR32-NEXT: - { id: 1, type: spill-slot, offset: -320, size: 16, alignment: 16, stack-id: default,
125 ; MIR32-NEXT: callee-saved-register: '$v26', callee-saved-restored: true, debug-info-variable: '',
126 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
127 ; MIR32-NEXT: - { id: 2, type: spill-slot, offset: -416, size: 16, alignment: 16, stack-id: default,
128 ; MIR32-NEXT: callee-saved-register: '$v20', callee-saved-restored: true, debug-info-variable: '',
129 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
130 ; MIR32-NEXT: - { id: 3, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default,
131 ; MIR32-NEXT: callee-saved-register: '$f31', callee-saved-restored: true, debug-info-variable: '',
132 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
133 ; MIR32-NEXT: - { id: 4, type: spill-slot, offset: -88, size: 8, alignment: 8, stack-id: default,
134 ; MIR32-NEXT: callee-saved-register: '$f21', callee-saved-restored: true, debug-info-variable: '',
135 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
136 ; MIR32-NEXT: - { id: 5, type: spill-slot, offset: -144, size: 8, alignment: 16, stack-id: default,
137 ; MIR32-NEXT: callee-saved-register: '$f14', callee-saved-restored: true, debug-info-variable: '',
138 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
139 ; MIR32-NEXT: - { id: 6, type: spill-slot, offset: -148, size: 4, alignment: 4, stack-id: default,
140 ; MIR32-NEXT: callee-saved-register: '$r31', callee-saved-restored: true, debug-info-variable: '',
141 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
142 ; MIR32-NEXT: - { id: 7, type: spill-slot, offset: -172, size: 4, alignment: 4, stack-id: default,
143 ; MIR32-NEXT: callee-saved-register: '$r25', callee-saved-restored: true, debug-info-variable: '',
144 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
145 ; MIR32-NEXT: - { id: 8, type: spill-slot, offset: -216, size: 4, alignment: 8, stack-id: default,
146 ; MIR32-NEXT: callee-saved-register: '$r14', callee-saved-restored: true, debug-info-variable: '',
147 ; MIR32-NEXT: debug-info-expression: '', debug-info-location: '' }
150 ; MIR32: liveins: $r14, $r25, $r31, $f14, $f21, $f31, $v20, $v26, $v31
152 ; MIR32-DAG: STW killed $r14, 232, $r1 :: (store (s32) into %fixed-stack.8, align 8)
153 ; MIR32-DAG: STW killed $r25, 276, $r1 :: (store (s32) into %fixed-stack.7)
154 ; MIR32-DAG: STW killed $r31, 300, $r1 :: (store (s32) into %fixed-stack.6)
155 ; MIR32-DAG: STFD killed $f14, 304, $r1 :: (store (s64) into %fixed-stack.5, align 16)
156 ; MIR32-DAG: STFD killed $f21, 360, $r1 :: (store (s64) into %fixed-stack.4)
157 ; MIR32-DAG: STFD killed $f31, 440, $r1 :: (store (s64) into %fixed-stack.3)
158 ; MIR32-DAG: $r{{[0-9]+}} = LI 32
159 ; MIR32-DAG: STXVD2X killed $v20, $r1, killed $r{{[0-9]+}} :: (store (s128) into %fixed-stack.2)
160 ; MIR32-DAG: $r{{[0-9]+}} = LI 128
161 ; MIR32-DAG: STXVD2X killed $v26, $r1, killed $r{{[0-9]+}} :: (store (s128) into %fixed-stack.1)
162 ; MIR32-DAG: $r{{[0-9]+}} = LI 208
163 ; MIR32-DAG: STXVD2X killed $v31, $r1, killed $r{{[0-9]+}} :: (store (s128) into %fixed-stack.0)
164 ; MIR32-DAG: $r1 = STWU $r1, -448, $r1
168 ; MIR32-DAG: $r14 = LWZ 232, $r1 :: (load (s32) from %fixed-stack.8, align 8)
169 ; MIR32-DAG: $r25 = LWZ 276, $r1 :: (load (s32) from %fixed-stack.7)
170 ; MIR32-DAG: $r31 = LWZ 300, $r1 :: (load (s32) from %fixed-stack.6)
171 ; MIR32-DAG: $f14 = LFD 304, $r1 :: (load (s64) from %fixed-stack.5, align 16)
172 ; MIR32-DAG: $f21 = LFD 360, $r1 :: (load (s64) from %fixed-stack.4)
173 ; MIR32-DAG: $f31 = LFD 440, $r1 :: (load (s64) from %fixed-stack.3)
174 ; MIR32-DAG: $v20 = LXVD2X $r1, killed $r{{[0-9]+}} :: (load (s128) from %fixed-stack.2)
175 ; MIR32-DAG: $r{{[0-9]+}} = LI 32
176 ; MIR32-DAG: $v26 = LXVD2X $r1, killed $r{{[0-9]+}} :: (load (s128) from %fixed-stack.1)
177 ; MIR32-DAG: $r{{[0-9]+}} = LI 128
178 ; MIR32-DAG: $v31 = LXVD2X $r1, killed $r{{[0-9]+}} :: (load (s128) from %fixed-stack.0)
179 ; MIR32-DAG: $r{{[0-9]+}} = LI 208
180 ; MIR32-DAG: $r1 = ADDI $r1, 448
181 ; MIR32-DAG: BLR implicit $lr, implicit $rm
183 ; MIR64: name: fprs_gprs_vecregs
185 ; MIR64-LABEL: fixedStack:
186 ; MIR64-NEXT: - { id: 0, type: spill-slot, offset: -304, size: 16, alignment: 16, stack-id: default,
187 ; MIR64-NEXT: callee-saved-register: '$v31', callee-saved-restored: true, debug-info-variable: '',
188 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
189 ; MIR64-NEXT: - { id: 1, type: spill-slot, offset: -384, size: 16, alignment: 16, stack-id: default,
190 ; MIR64-NEXT: callee-saved-register: '$v26', callee-saved-restored: true, debug-info-variable: '',
191 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
192 ; MIR64-NEXT: - { id: 2, type: spill-slot, offset: -480, size: 16, alignment: 16, stack-id: default,
193 ; MIR64-NEXT: callee-saved-register: '$v20', callee-saved-restored: true, debug-info-variable: '',
194 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
195 ; MIR64-NEXT: - { id: 3, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default,
196 ; MIR64-NEXT: callee-saved-register: '$f31', callee-saved-restored: true, debug-info-variable: '',
197 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
198 ; MIR64-NEXT: - { id: 4, type: spill-slot, offset: -88, size: 8, alignment: 8, stack-id: default,
199 ; MIR64-NEXT: callee-saved-register: '$f21', callee-saved-restored: true, debug-info-variable: '',
200 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
201 ; MIR64-NEXT: - { id: 5, type: spill-slot, offset: -144, size: 8, alignment: 16, stack-id: default,
202 ; MIR64-NEXT: callee-saved-register: '$f14', callee-saved-restored: true, debug-info-variable: '',
203 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
204 ; MIR64-NEXT: - { id: 6, type: spill-slot, offset: -152, size: 8, alignment: 8, stack-id: default,
205 ; MIR64-NEXT: callee-saved-register: '$x31', callee-saved-restored: true, debug-info-variable: '',
206 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
207 ; MIR64-NEXT: - { id: 7, type: spill-slot, offset: -200, size: 8, alignment: 8, stack-id: default,
208 ; MIR64-NEXT: callee-saved-register: '$x25', callee-saved-restored: true, debug-info-variable: '',
209 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
210 ; MIR64-NEXT: - { id: 8, type: spill-slot, offset: -288, size: 8, alignment: 16, stack-id: default,
211 ; MIR64-NEXT: callee-saved-register: '$x14', callee-saved-restored: true, debug-info-variable: '',
212 ; MIR64-NEXT: debug-info-expression: '', debug-info-location: '' }
215 ; MIR64: liveins: $x14, $x25, $x31, $f14, $f21, $f31, $v20, $v26, $v31
217 ; MIR64-DAG: $x1 = STDU $x1, -544, $x1
218 ; MIR64-DAG: STD killed $x14, 256, $x1 :: (store (s64) into %fixed-stack.8, align 16)
219 ; MIR64-DAG: STD killed $x25, 344, $x1 :: (store (s64) into %fixed-stack.7)
220 ; MIR64-DAG: STD killed $x31, 392, $x1 :: (store (s64) into %fixed-stack.6)
221 ; MIR64-DAG: STFD killed $f14, 400, $x1 :: (store (s64) into %fixed-stack.5, align 16)
222 ; MIR64-DAG: STFD killed $f21, 456, $x1 :: (store (s64) into %fixed-stack.4)
223 ; MIR64-DAG: STFD killed $f31, 536, $x1 :: (store (s64) into %fixed-stack.3)
224 ; MIR64-DAG: $x{{[0-9]+}} = LI8 64
225 ; MIR64-DAG: STXVD2X killed $v20, $x1, killed $x{{[0-9]+}} :: (store (s128) into %fixed-stack.2)
226 ; MIR64-DAG: $x{{[0-9]+}} = LI8 160
227 ; MIR64-DAG: STXVD2X killed $v26, $x1, killed $x{{[0-9]+}} :: (store (s128) into %fixed-stack.1)
228 ; MIR64-DAG: $x{{[0-9]+}} = LI8 240
229 ; MIR64-DAG: STXVD2X killed $v31, $x1, killed $x{{[0-9]+}} :: (store (s128) into %fixed-stack.0)
233 ; MIR64-DAG: $x14 = LD 256, $x1 :: (load (s64) from %fixed-stack.8, align 16)
234 ; MIR64-DAG: $x25 = LD 344, $x1 :: (load (s64) from %fixed-stack.7)
235 ; MIR64-DAG: $x31 = LD 392, $x1 :: (load (s64) from %fixed-stack.6)
236 ; MIR64-DAG: $f14 = LFD 400, $x1 :: (load (s64) from %fixed-stack.5, align 16)
237 ; MIR64-DAG: $f21 = LFD 456, $x1 :: (load (s64) from %fixed-stack.4)
238 ; MIR64-DAG: $f31 = LFD 536, $x1 :: (load (s64) from %fixed-stack.3)
239 ; MIR64-DAG: $v20 = LXVD2X $x1, killed $x{{[0-9]+}} :: (load (s128) from %fixed-stack.2)
240 ; MIR64-DAG: $x{{[0-9]+}} = LI8 64
241 ; MIR64-DAG: $v26 = LXVD2X $x1, killed $x{{[0-9]+}} :: (load (s128) from %fixed-stack.1)
242 ; MIR64-DAG: $x{{[0-9]+}} = LI8 160
243 ; MIR64-DAG: $v31 = LXVD2X $x1, killed $x{{[0-9]+}} :: (load (s128) from %fixed-stack.0)
244 ; MIR64-DAG: $x{{[0-9]+}} = LI8 240
245 ; MIR64-DAG: $x1 = ADDI8 $x1, 544
246 ; MIR64-DAG: BLR8 implicit $lr8, implicit $rm
248 ; ASM32-LABEL: .fprs_gprs_vecregs:
250 ; ASM32: stwu 1, -448(1)
251 ; ASM32-DAG: li {{[0-9]+}}, 32
252 ; ASM32-DAG: stw 14, 232(1) # 4-byte Folded Spill
253 ; ASM32-DAG: stfd 14, 304(1) # 8-byte Folded Spill
254 ; ASM32-DAG: stxvd2x 52, 1, {{[0-9]+}} # 16-byte Folded Spill
255 ; ASM32-DAG: li {{[0-9]+}}, 128
256 ; ASM32-DAG: stw 25, 276(1) # 4-byte Folded Spill
257 ; ASM32-DAG: stxvd2x 58, 1, {{[0-9]+}} # 16-byte Folded Spill
258 ; ASM32-DAG: li {{[0-9]+}}, 208
259 ; ASM32-DAG: stw 31, 300(1) # 4-byte Folded Spill
260 ; ASM32-DAG: stfd 21, 360(1) # 8-byte Folded Spill
261 ; ASM32-DAG: stfd 31, 440(1) # 8-byte Folded Spill
262 ; ASM32-DAG: stxvd2x 63, 1, {{[0-9]+}} # 16-byte Folded Spill
265 ; ASM32-DAG: lxvd2x 63, 1, {{[0-9]+}} # 16-byte Folded Reload
266 ; ASM32-DAG: li {{[0-9]+}}, 128
267 ; ASM32-DAG: lfd 31, 440(1) # 8-byte Folded Reload
268 ; ASM32-DAG: lxvd2x 58, 1, {{[0-9]+}} # 16-byte Folded Reload
269 ; ASM32-DAG: li {{[0-9]+}}, 32
270 ; ASM32-DAG: lfd 21, 360(1) # 8-byte Folded Reload
271 ; ASM32-DAG: lxvd2x 52, 1, {{[0-9]+}} # 16-byte Folded Reload
272 ; ASM32-DAG: lfd 14, 304(1) # 8-byte Folded Reload
273 ; ASM32-DAG: lwz 31, 300(1) # 4-byte Folded Reload
274 ; ASM32-DAG: lwz 25, 276(1) # 4-byte Folded Reload
275 ; ASM32-DAG: lwz 14, 232(1) # 4-byte Folded Reload
276 ; ASM32-DAG: addi 1, 1, 448
279 ; ASM64-LABEL: .fprs_gprs_vecregs:
281 ; ASM64: stdu 1, -544(1)
282 ; ASM64-DAG: li {{[0-9]+}}, 64
283 ; ASM64-DAG: std 14, 256(1) # 8-byte Folded Spill
284 ; ASM64-DAG: stfd 14, 400(1) # 8-byte Folded Spill
285 ; ASM64-DAG: stxvd2x 52, 1, {{[0-9]+}} # 16-byte Folded Spill
286 ; ASM64-DAG: li {{[0-9]+}}, 160
287 ; ASM64-DAG: std 25, 344(1) # 8-byte Folded Spill
288 ; ASM64-DAG: stxvd2x 58, 1, {{[0-9]+}} # 16-byte Folded Spill
289 ; ASM64-DAG: li {{[0-9]+}}, 240
290 ; ASM64-DAG: std 31, 392(1) # 8-byte Folded Spill
291 ; ASM64-DAG: stfd 21, 456(1) # 8-byte Folded Spill
292 ; ASM64-DAG: stfd 31, 536(1) # 8-byte Folded Spill
293 ; ASM64-DAG: stxvd2x 63, 1, {{[0-9]+}} # 16-byte Folded Spill
296 ; ASM64-DAG: lxvd2x 63, 1, {{[0-9]+}} # 16-byte Folded Reload
297 ; ASM64-DAG: li {{[0-9]+}}, 160
298 ; ASM64-DAG: lfd 31, 536(1) # 8-byte Folded Reload
299 ; ASM64-DAG: lxvd2x 58, 1, {{[0-9]+}} # 16-byte Folded Reload
300 ; ASM64-DAG: li {{[0-9]+}}, 64
301 ; ASM64-DAG: lfd 21, 456(1) # 8-byte Folded Reload
302 ; ASM64-DAG: lxvd2x 52, 1, {{[0-9]+}} # 16-byte Folded Reload
303 ; ASM64-DAG: lfd 14, 400(1) # 8-byte Folded Reload
304 ; ASM64-DAG: ld 31, 392(1) # 8-byte Folded Reload
305 ; ASM64-DAG: ld 25, 344(1) # 8-byte Folded Reload
306 ; ASM64-DAG: ld 14, 256(1) # 8-byte Folded Reload
307 ; ASM64-DAG: addi 1, 1, 544