brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 45e5576 Raw
92 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck --check-prefix=LA32 %s3; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck --check-prefix=LA64 %s4 5declare i32 @external_function(i32)6 7define i32 @test_call_external(i32 %a) nounwind {8; LA32-LABEL: test_call_external:9; LA32:       # %bb.0:10; LA32-NEXT:    addi.w $sp, $sp, -1611; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill12; LA32-NEXT:    bl external_function13; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload14; LA32-NEXT:    addi.w $sp, $sp, 1615; LA32-NEXT:    ret16;17; LA64-LABEL: test_call_external:18; LA64:       # %bb.0:19; LA64-NEXT:    addi.d $sp, $sp, -1620; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill21; LA64-NEXT:    pcaddu18i $ra, %call36(external_function)22; LA64-NEXT:    jirl $ra, $ra, 023; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload24; LA64-NEXT:    addi.d $sp, $sp, 1625; LA64-NEXT:    ret26  %1 = call i32 @external_function(i32 %a)27  ret i32 %128}29 30define i32 @defined_function(i32 %a) nounwind {31; LA32-LABEL: defined_function:32; LA32:       # %bb.0:33; LA32-NEXT:    addi.w $a0, $a0, 134; LA32-NEXT:    ret35;36; LA64-LABEL: defined_function:37; LA64:       # %bb.0:38; LA64-NEXT:    addi.w $a0, $a0, 139; LA64-NEXT:    ret40  %1 = add i32 %a, 141  ret i32 %142}43 44define i32 @test_call_defined(i32 %a) nounwind {45; LA32-LABEL: test_call_defined:46; LA32:       # %bb.0:47; LA32-NEXT:    addi.w $sp, $sp, -1648; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill49; LA32-NEXT:    bl defined_function50; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload51; LA32-NEXT:    addi.w $sp, $sp, 1652; LA32-NEXT:    ret53;54; LA64-LABEL: test_call_defined:55; LA64:       # %bb.0:56; LA64-NEXT:    addi.d $sp, $sp, -1657; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill58; LA64-NEXT:    pcaddu18i $ra, %call36(defined_function)59; LA64-NEXT:    jirl $ra, $ra, 060; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload61; LA64-NEXT:    addi.d $sp, $sp, 1662; LA64-NEXT:    ret63  %1 = call i32 @defined_function(i32 %a) nounwind64  ret i32 %165}66 67define i32 @test_call_indirect(ptr %a, i32 %b) nounwind {68; LA32-LABEL: test_call_indirect:69; LA32:       # %bb.0:70; LA32-NEXT:    addi.w $sp, $sp, -1671; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill72; LA32-NEXT:    move $a2, $a073; LA32-NEXT:    move $a0, $a174; LA32-NEXT:    jirl $ra, $a2, 075; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload76; LA32-NEXT:    addi.w $sp, $sp, 1677; LA32-NEXT:    ret78;79; LA64-LABEL: test_call_indirect:80; LA64:       # %bb.0:81; LA64-NEXT:    addi.d $sp, $sp, -1682; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill83; LA64-NEXT:    move $a2, $a084; LA64-NEXT:    move $a0, $a185; LA64-NEXT:    jirl $ra, $a2, 086; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload87; LA64-NEXT:    addi.d $sp, $sp, 1688; LA64-NEXT:    ret89  %1 = call i32 %a(i32 %b)90  ret i32 %191}92