@@ -201,3 +201,97 @@ for.end: ; preds = %for.inc, %entry
201201}
202202
203203declare i32 @foo (i32 , i32 , i32 , i32 , i32 , i32 )
204+
205+ define i32 @remat_ld (i32 %0 , i32 %1 , i32 %2 , i32 %3 , i32 %4 , i32 %5 , i32 %6 , i32 %7 , i32 %stack0 , i32 %stack1 , ptr %p , ptr %q ) {
206+ ; RV32I-LABEL: remat_ld:
207+ ; RV32I: # %bb.0: # %entry
208+ ; RV32I-NEXT: addi sp, sp, -64
209+ ; RV32I-NEXT: .cfi_def_cfa_offset 64
210+ ; RV32I-NEXT: sw ra, 60(sp) # 4-byte Folded Spill
211+ ; RV32I-NEXT: sw s0, 56(sp) # 4-byte Folded Spill
212+ ; RV32I-NEXT: sw s1, 52(sp) # 4-byte Folded Spill
213+ ; RV32I-NEXT: sw s2, 48(sp) # 4-byte Folded Spill
214+ ; RV32I-NEXT: sw s3, 44(sp) # 4-byte Folded Spill
215+ ; RV32I-NEXT: sw s4, 40(sp) # 4-byte Folded Spill
216+ ; RV32I-NEXT: sw s5, 36(sp) # 4-byte Folded Spill
217+ ; RV32I-NEXT: sw s6, 32(sp) # 4-byte Folded Spill
218+ ; RV32I-NEXT: sw s7, 28(sp) # 4-byte Folded Spill
219+ ; RV32I-NEXT: sw s8, 24(sp) # 4-byte Folded Spill
220+ ; RV32I-NEXT: sw s9, 20(sp) # 4-byte Folded Spill
221+ ; RV32I-NEXT: sw s10, 16(sp) # 4-byte Folded Spill
222+ ; RV32I-NEXT: sw s11, 12(sp) # 4-byte Folded Spill
223+ ; RV32I-NEXT: .cfi_offset ra, -4
224+ ; RV32I-NEXT: .cfi_offset s0, -8
225+ ; RV32I-NEXT: .cfi_offset s1, -12
226+ ; RV32I-NEXT: .cfi_offset s2, -16
227+ ; RV32I-NEXT: .cfi_offset s3, -20
228+ ; RV32I-NEXT: .cfi_offset s4, -24
229+ ; RV32I-NEXT: .cfi_offset s5, -28
230+ ; RV32I-NEXT: .cfi_offset s6, -32
231+ ; RV32I-NEXT: .cfi_offset s7, -36
232+ ; RV32I-NEXT: .cfi_offset s8, -40
233+ ; RV32I-NEXT: .cfi_offset s9, -44
234+ ; RV32I-NEXT: .cfi_offset s10, -48
235+ ; RV32I-NEXT: .cfi_offset s11, -52
236+ ; RV32I-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
237+ ; RV32I-NEXT: lw a2, 68(sp)
238+ ; RV32I-NEXT: lw a3, 64(sp)
239+ ; RV32I-NEXT: lw a0, 72(sp)
240+ ; RV32I-NEXT: lw a1, 76(sp)
241+ ; RV32I-NEXT: sw a3, 0(sp) # 4-byte Folded Spill
242+ ; RV32I-NEXT: sw a3, 0(a0)
243+ ; RV32I-NEXT: sw a2, 4(sp) # 4-byte Folded Spill
244+ ; RV32I-NEXT: sw a2, 0(a1)
245+ ; RV32I-NEXT: #APP
246+ ; RV32I-NEXT: #NO_APP
247+ ; RV32I-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
248+ ; RV32I-NEXT: beqz a0, .LBB1_2
249+ ; RV32I-NEXT: # %bb.1: # %falsebb
250+ ; RV32I-NEXT: li a0, 0
251+ ; RV32I-NEXT: j .LBB1_3
252+ ; RV32I-NEXT: .LBB1_2: # %truebb
253+ ; RV32I-NEXT: lw a0, 4(sp) # 4-byte Folded Reload
254+ ; RV32I-NEXT: lw a1, 0(sp) # 4-byte Folded Reload
255+ ; RV32I-NEXT: add a0, a1, a0
256+ ; RV32I-NEXT: .LBB1_3: # %falsebb
257+ ; RV32I-NEXT: lw ra, 60(sp) # 4-byte Folded Reload
258+ ; RV32I-NEXT: lw s0, 56(sp) # 4-byte Folded Reload
259+ ; RV32I-NEXT: lw s1, 52(sp) # 4-byte Folded Reload
260+ ; RV32I-NEXT: lw s2, 48(sp) # 4-byte Folded Reload
261+ ; RV32I-NEXT: lw s3, 44(sp) # 4-byte Folded Reload
262+ ; RV32I-NEXT: lw s4, 40(sp) # 4-byte Folded Reload
263+ ; RV32I-NEXT: lw s5, 36(sp) # 4-byte Folded Reload
264+ ; RV32I-NEXT: lw s6, 32(sp) # 4-byte Folded Reload
265+ ; RV32I-NEXT: lw s7, 28(sp) # 4-byte Folded Reload
266+ ; RV32I-NEXT: lw s8, 24(sp) # 4-byte Folded Reload
267+ ; RV32I-NEXT: lw s9, 20(sp) # 4-byte Folded Reload
268+ ; RV32I-NEXT: lw s10, 16(sp) # 4-byte Folded Reload
269+ ; RV32I-NEXT: lw s11, 12(sp) # 4-byte Folded Reload
270+ ; RV32I-NEXT: .cfi_restore ra
271+ ; RV32I-NEXT: .cfi_restore s0
272+ ; RV32I-NEXT: .cfi_restore s1
273+ ; RV32I-NEXT: .cfi_restore s2
274+ ; RV32I-NEXT: .cfi_restore s3
275+ ; RV32I-NEXT: .cfi_restore s4
276+ ; RV32I-NEXT: .cfi_restore s5
277+ ; RV32I-NEXT: .cfi_restore s6
278+ ; RV32I-NEXT: .cfi_restore s7
279+ ; RV32I-NEXT: .cfi_restore s8
280+ ; RV32I-NEXT: .cfi_restore s9
281+ ; RV32I-NEXT: .cfi_restore s10
282+ ; RV32I-NEXT: .cfi_restore s11
283+ ; RV32I-NEXT: addi sp, sp, 64
284+ ; RV32I-NEXT: .cfi_def_cfa_offset 0
285+ ; RV32I-NEXT: ret
286+ entry:
287+ store i32 %stack0 , ptr %p
288+ store i32 %stack1 , ptr %q
289+ tail call void asm sideeffect "" , "~{x1},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31}" ()
290+ %a = icmp eq i32 %0 , 0
291+ br i1 %a , label %truebb , label %falsebb
292+ truebb:
293+ %b = add i32 %stack0 , %stack1
294+ ret i32 %b
295+ falsebb:
296+ ret i32 0
297+ }
0 commit comments