blob: b483a7640e171767ce96ddd56db23e5beaafe44e [file]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc -mtriple=loongarch32 %s -o - | FileCheck %s --check-prefix=LA32
; RUN: llc -mtriple=loongarch64 %s -o - | FileCheck %s --check-prefix=LA64
%Box = type { i32, i32, i32, i8, [3 x i8], i32, i8, [1 x i8], i16, i16, i8, [5 x i8], { i64, ptr }, { i64, ptr }, { i64, ptr } }
define void @test(ptr byval(%Box) %0) nounwind {
; LA32-LABEL: test:
; LA32: # %bb.0:
; LA32-NEXT: addi.w $sp, $sp, -112
; LA32-NEXT: st.w $ra, $sp, 108 # 4-byte Folded Spill
; LA32-NEXT: st.w $fp, $sp, 104 # 4-byte Folded Spill
; LA32-NEXT: addi.w $fp, $sp, 24
; LA32-NEXT: ori $a2, $zero, 80
; LA32-NEXT: move $a0, $fp
; LA32-NEXT: move $a1, $zero
; LA32-NEXT: bl memcpy
; LA32-NEXT: st.w $zero, $sp, 8
; LA32-NEXT: st.w $zero, $sp, 4
; LA32-NEXT: st.w $zero, $sp, 0
; LA32-NEXT: move $a0, $zero
; LA32-NEXT: move $a1, $zero
; LA32-NEXT: move $a2, $zero
; LA32-NEXT: move $a3, $fp
; LA32-NEXT: move $a4, $zero
; LA32-NEXT: move $a5, $zero
; LA32-NEXT: move $a6, $zero
; LA32-NEXT: move $a7, $zero
; LA32-NEXT: jirl $ra, $zero, 0
; LA32-NEXT: ld.w $fp, $sp, 104 # 4-byte Folded Reload
; LA32-NEXT: ld.w $ra, $sp, 108 # 4-byte Folded Reload
; LA32-NEXT: addi.w $sp, $sp, 112
; LA32-NEXT: ret
;
; LA64-LABEL: test:
; LA64: # %bb.0:
; LA64-NEXT: movgr2fr.d $fa0, $zero
; LA64-NEXT: move $a0, $zero
; LA64-NEXT: move $a1, $zero
; LA64-NEXT: move $a2, $zero
; LA64-NEXT: move $a3, $zero
; LA64-NEXT: move $a4, $zero
; LA64-NEXT: move $a5, $zero
; LA64-NEXT: move $a6, $zero
; LA64-NEXT: jr $a0
tail call void null(ptr null, double 0.000000e+00, ptr byval(%Box) null, { i64, ptr } zeroinitializer, i32 0, i64 0, i1 false)
ret void
}