brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.1 KiB · 98db8f0 Raw
445 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA32S3; RUN: llc --mtriple=loongarch32 --mattr=+f -target-abi=ilp32s --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA32F-ILP32S4; RUN: llc --mtriple=loongarch32 --mattr=+f -target-abi=ilp32d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA32F-ILP32D5; RUN: llc --mtriple=loongarch32 --mattr=+d -target-abi=ilp32s --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA32D-ILP32S6; RUN: llc --mtriple=loongarch32 --mattr=+d -target-abi=ilp32d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA32D-ILP32D7; RUN: llc --mtriple=loongarch64 --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA64S8; RUN: llc --mtriple=loongarch64 --mattr=+f -target-abi=lp64s --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA64F-LP64S9; RUN: llc --mtriple=loongarch64 --mattr=+f -target-abi=lp64d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA64F-LP64D10; RUN: llc --mtriple=loongarch64 --mattr=+d -target-abi=lp64s --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA64D-LP64S11; RUN: llc --mtriple=loongarch64 --mattr=+d -target-abi=lp64d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA64D-LP64D12 13define half @f(half %a, half %b, half %c) {14; LA32S-LABEL: f:15; LA32S:       # %bb.0:16; LA32S-NEXT:    addi.w $sp, $sp, -3217; LA32S-NEXT:    .cfi_def_cfa_offset 3218; LA32S-NEXT:    st.w $ra, $sp, 28 # 4-byte Folded Spill19; LA32S-NEXT:    st.w $fp, $sp, 24 # 4-byte Folded Spill20; LA32S-NEXT:    st.w $s0, $sp, 20 # 4-byte Folded Spill21; LA32S-NEXT:    st.w $s1, $sp, 16 # 4-byte Folded Spill22; LA32S-NEXT:    st.w $s2, $sp, 12 # 4-byte Folded Spill23; LA32S-NEXT:    .cfi_offset 1, -424; LA32S-NEXT:    .cfi_offset 22, -825; LA32S-NEXT:    .cfi_offset 23, -1226; LA32S-NEXT:    .cfi_offset 24, -1627; LA32S-NEXT:    .cfi_offset 25, -2028; LA32S-NEXT:    move $fp, $a229; LA32S-NEXT:    move $s0, $a130; LA32S-NEXT:    lu12i.w $a1, 1531; LA32S-NEXT:    ori $s2, $a1, 409532; LA32S-NEXT:    and $a0, $a0, $s233; LA32S-NEXT:    bl __extendhfsf234; LA32S-NEXT:    move $s1, $a035; LA32S-NEXT:    and $a0, $s0, $s236; LA32S-NEXT:    bl __extendhfsf237; LA32S-NEXT:    move $a1, $a038; LA32S-NEXT:    move $a0, $s139; LA32S-NEXT:    bl __addsf340; LA32S-NEXT:    bl __truncsfhf241; LA32S-NEXT:    move $s0, $a042; LA32S-NEXT:    and $a0, $fp, $s243; LA32S-NEXT:    bl __extendhfsf244; LA32S-NEXT:    move $fp, $a045; LA32S-NEXT:    and $a0, $s0, $s246; LA32S-NEXT:    bl __extendhfsf247; LA32S-NEXT:    move $a1, $fp48; LA32S-NEXT:    bl __addsf349; LA32S-NEXT:    bl __truncsfhf250; LA32S-NEXT:    ld.w $s2, $sp, 12 # 4-byte Folded Reload51; LA32S-NEXT:    ld.w $s1, $sp, 16 # 4-byte Folded Reload52; LA32S-NEXT:    ld.w $s0, $sp, 20 # 4-byte Folded Reload53; LA32S-NEXT:    ld.w $fp, $sp, 24 # 4-byte Folded Reload54; LA32S-NEXT:    ld.w $ra, $sp, 28 # 4-byte Folded Reload55; LA32S-NEXT:    addi.w $sp, $sp, 3256; LA32S-NEXT:    ret57;58; LA32F-ILP32S-LABEL: f:59; LA32F-ILP32S:       # %bb.0:60; LA32F-ILP32S-NEXT:    addi.w $sp, $sp, -1661; LA32F-ILP32S-NEXT:    .cfi_def_cfa_offset 1662; LA32F-ILP32S-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill63; LA32F-ILP32S-NEXT:    st.w $fp, $sp, 8 # 4-byte Folded Spill64; LA32F-ILP32S-NEXT:    st.w $s0, $sp, 4 # 4-byte Folded Spill65; LA32F-ILP32S-NEXT:    .cfi_offset 1, -466; LA32F-ILP32S-NEXT:    .cfi_offset 22, -867; LA32F-ILP32S-NEXT:    .cfi_offset 23, -1268; LA32F-ILP32S-NEXT:    move $fp, $a269; LA32F-ILP32S-NEXT:    move $s0, $a070; LA32F-ILP32S-NEXT:    move $a0, $a171; LA32F-ILP32S-NEXT:    bl __extendhfsf272; LA32F-ILP32S-NEXT:    movgr2fr.w $fa0, $a073; LA32F-ILP32S-NEXT:    fst.s $fa0, $sp, 0 # 4-byte Folded Spill74; LA32F-ILP32S-NEXT:    move $a0, $s075; LA32F-ILP32S-NEXT:    bl __extendhfsf276; LA32F-ILP32S-NEXT:    movgr2fr.w $fa0, $a077; LA32F-ILP32S-NEXT:    fld.s $fa1, $sp, 0 # 4-byte Folded Reload78; LA32F-ILP32S-NEXT:    fadd.s $fa0, $fa0, $fa179; LA32F-ILP32S-NEXT:    movfr2gr.s $a0, $fa080; LA32F-ILP32S-NEXT:    bl __truncsfhf281; LA32F-ILP32S-NEXT:    bl __extendhfsf282; LA32F-ILP32S-NEXT:    movgr2fr.w $fa0, $a083; LA32F-ILP32S-NEXT:    fst.s $fa0, $sp, 0 # 4-byte Folded Spill84; LA32F-ILP32S-NEXT:    move $a0, $fp85; LA32F-ILP32S-NEXT:    bl __extendhfsf286; LA32F-ILP32S-NEXT:    movgr2fr.w $fa0, $a087; LA32F-ILP32S-NEXT:    fld.s $fa1, $sp, 0 # 4-byte Folded Reload88; LA32F-ILP32S-NEXT:    fadd.s $fa0, $fa1, $fa089; LA32F-ILP32S-NEXT:    movfr2gr.s $a0, $fa090; LA32F-ILP32S-NEXT:    bl __truncsfhf291; LA32F-ILP32S-NEXT:    lu12i.w $a1, -1692; LA32F-ILP32S-NEXT:    or $a0, $a0, $a193; LA32F-ILP32S-NEXT:    ld.w $s0, $sp, 4 # 4-byte Folded Reload94; LA32F-ILP32S-NEXT:    ld.w $fp, $sp, 8 # 4-byte Folded Reload95; LA32F-ILP32S-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload96; LA32F-ILP32S-NEXT:    addi.w $sp, $sp, 1697; LA32F-ILP32S-NEXT:    ret98;99; LA32F-ILP32D-LABEL: f:100; LA32F-ILP32D:       # %bb.0:101; LA32F-ILP32D-NEXT:    addi.w $sp, $sp, -16102; LA32F-ILP32D-NEXT:    .cfi_def_cfa_offset 16103; LA32F-ILP32D-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill104; LA32F-ILP32D-NEXT:    fst.s $fs0, $sp, 8 # 4-byte Folded Spill105; LA32F-ILP32D-NEXT:    fst.s $fs1, $sp, 4 # 4-byte Folded Spill106; LA32F-ILP32D-NEXT:    fst.s $fs2, $sp, 0 # 4-byte Folded Spill107; LA32F-ILP32D-NEXT:    .cfi_offset 1, -4108; LA32F-ILP32D-NEXT:    .cfi_offset 56, -8109; LA32F-ILP32D-NEXT:    .cfi_offset 57, -12110; LA32F-ILP32D-NEXT:    .cfi_offset 58, -16111; LA32F-ILP32D-NEXT:    fmov.s $fs0, $fa2112; LA32F-ILP32D-NEXT:    fmov.s $fs1, $fa0113; LA32F-ILP32D-NEXT:    fmov.s $fa0, $fa1114; LA32F-ILP32D-NEXT:    bl __extendhfsf2115; LA32F-ILP32D-NEXT:    fmov.s $fs2, $fa0116; LA32F-ILP32D-NEXT:    fmov.s $fa0, $fs1117; LA32F-ILP32D-NEXT:    bl __extendhfsf2118; LA32F-ILP32D-NEXT:    fadd.s $fa0, $fa0, $fs2119; LA32F-ILP32D-NEXT:    bl __truncsfhf2120; LA32F-ILP32D-NEXT:    bl __extendhfsf2121; LA32F-ILP32D-NEXT:    fmov.s $fs1, $fa0122; LA32F-ILP32D-NEXT:    fmov.s $fa0, $fs0123; LA32F-ILP32D-NEXT:    bl __extendhfsf2124; LA32F-ILP32D-NEXT:    fadd.s $fa0, $fs1, $fa0125; LA32F-ILP32D-NEXT:    bl __truncsfhf2126; LA32F-ILP32D-NEXT:    movfr2gr.s $a0, $fa0127; LA32F-ILP32D-NEXT:    lu12i.w $a1, -16128; LA32F-ILP32D-NEXT:    or $a0, $a0, $a1129; LA32F-ILP32D-NEXT:    movgr2fr.w $fa0, $a0130; LA32F-ILP32D-NEXT:    fld.s $fs2, $sp, 0 # 4-byte Folded Reload131; LA32F-ILP32D-NEXT:    fld.s $fs1, $sp, 4 # 4-byte Folded Reload132; LA32F-ILP32D-NEXT:    fld.s $fs0, $sp, 8 # 4-byte Folded Reload133; LA32F-ILP32D-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload134; LA32F-ILP32D-NEXT:    addi.w $sp, $sp, 16135; LA32F-ILP32D-NEXT:    ret136;137; LA32D-ILP32S-LABEL: f:138; LA32D-ILP32S:       # %bb.0:139; LA32D-ILP32S-NEXT:    addi.w $sp, $sp, -16140; LA32D-ILP32S-NEXT:    .cfi_def_cfa_offset 16141; LA32D-ILP32S-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill142; LA32D-ILP32S-NEXT:    st.w $fp, $sp, 8 # 4-byte Folded Spill143; LA32D-ILP32S-NEXT:    st.w $s0, $sp, 4 # 4-byte Folded Spill144; LA32D-ILP32S-NEXT:    .cfi_offset 1, -4145; LA32D-ILP32S-NEXT:    .cfi_offset 22, -8146; LA32D-ILP32S-NEXT:    .cfi_offset 23, -12147; LA32D-ILP32S-NEXT:    move $fp, $a2148; LA32D-ILP32S-NEXT:    move $s0, $a0149; LA32D-ILP32S-NEXT:    move $a0, $a1150; LA32D-ILP32S-NEXT:    bl __extendhfsf2151; LA32D-ILP32S-NEXT:    movgr2fr.w $fa0, $a0152; LA32D-ILP32S-NEXT:    fst.s $fa0, $sp, 0 # 4-byte Folded Spill153; LA32D-ILP32S-NEXT:    move $a0, $s0154; LA32D-ILP32S-NEXT:    bl __extendhfsf2155; LA32D-ILP32S-NEXT:    movgr2fr.w $fa0, $a0156; LA32D-ILP32S-NEXT:    fld.s $fa1, $sp, 0 # 4-byte Folded Reload157; LA32D-ILP32S-NEXT:    fadd.s $fa0, $fa0, $fa1158; LA32D-ILP32S-NEXT:    movfr2gr.s $a0, $fa0159; LA32D-ILP32S-NEXT:    bl __truncsfhf2160; LA32D-ILP32S-NEXT:    bl __extendhfsf2161; LA32D-ILP32S-NEXT:    movgr2fr.w $fa0, $a0162; LA32D-ILP32S-NEXT:    fst.s $fa0, $sp, 0 # 4-byte Folded Spill163; LA32D-ILP32S-NEXT:    move $a0, $fp164; LA32D-ILP32S-NEXT:    bl __extendhfsf2165; LA32D-ILP32S-NEXT:    movgr2fr.w $fa0, $a0166; LA32D-ILP32S-NEXT:    fld.s $fa1, $sp, 0 # 4-byte Folded Reload167; LA32D-ILP32S-NEXT:    fadd.s $fa0, $fa1, $fa0168; LA32D-ILP32S-NEXT:    movfr2gr.s $a0, $fa0169; LA32D-ILP32S-NEXT:    bl __truncsfhf2170; LA32D-ILP32S-NEXT:    lu12i.w $a1, -16171; LA32D-ILP32S-NEXT:    or $a0, $a0, $a1172; LA32D-ILP32S-NEXT:    ld.w $s0, $sp, 4 # 4-byte Folded Reload173; LA32D-ILP32S-NEXT:    ld.w $fp, $sp, 8 # 4-byte Folded Reload174; LA32D-ILP32S-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload175; LA32D-ILP32S-NEXT:    addi.w $sp, $sp, 16176; LA32D-ILP32S-NEXT:    ret177;178; LA32D-ILP32D-LABEL: f:179; LA32D-ILP32D:       # %bb.0:180; LA32D-ILP32D-NEXT:    addi.w $sp, $sp, -32181; LA32D-ILP32D-NEXT:    .cfi_def_cfa_offset 32182; LA32D-ILP32D-NEXT:    st.w $ra, $sp, 28 # 4-byte Folded Spill183; LA32D-ILP32D-NEXT:    fst.d $fs0, $sp, 16 # 8-byte Folded Spill184; LA32D-ILP32D-NEXT:    fst.d $fs1, $sp, 8 # 8-byte Folded Spill185; LA32D-ILP32D-NEXT:    fst.d $fs2, $sp, 0 # 8-byte Folded Spill186; LA32D-ILP32D-NEXT:    .cfi_offset 1, -4187; LA32D-ILP32D-NEXT:    .cfi_offset 56, -16188; LA32D-ILP32D-NEXT:    .cfi_offset 57, -24189; LA32D-ILP32D-NEXT:    .cfi_offset 58, -32190; LA32D-ILP32D-NEXT:    fmov.s $fs0, $fa2191; LA32D-ILP32D-NEXT:    fmov.s $fs1, $fa0192; LA32D-ILP32D-NEXT:    fmov.s $fa0, $fa1193; LA32D-ILP32D-NEXT:    bl __extendhfsf2194; LA32D-ILP32D-NEXT:    fmov.s $fs2, $fa0195; LA32D-ILP32D-NEXT:    fmov.s $fa0, $fs1196; LA32D-ILP32D-NEXT:    bl __extendhfsf2197; LA32D-ILP32D-NEXT:    fadd.s $fa0, $fa0, $fs2198; LA32D-ILP32D-NEXT:    bl __truncsfhf2199; LA32D-ILP32D-NEXT:    bl __extendhfsf2200; LA32D-ILP32D-NEXT:    fmov.s $fs1, $fa0201; LA32D-ILP32D-NEXT:    fmov.s $fa0, $fs0202; LA32D-ILP32D-NEXT:    bl __extendhfsf2203; LA32D-ILP32D-NEXT:    fadd.s $fa0, $fs1, $fa0204; LA32D-ILP32D-NEXT:    bl __truncsfhf2205; LA32D-ILP32D-NEXT:    movfr2gr.s $a0, $fa0206; LA32D-ILP32D-NEXT:    lu12i.w $a1, -16207; LA32D-ILP32D-NEXT:    or $a0, $a0, $a1208; LA32D-ILP32D-NEXT:    movgr2fr.w $fa0, $a0209; LA32D-ILP32D-NEXT:    fld.d $fs2, $sp, 0 # 8-byte Folded Reload210; LA32D-ILP32D-NEXT:    fld.d $fs1, $sp, 8 # 8-byte Folded Reload211; LA32D-ILP32D-NEXT:    fld.d $fs0, $sp, 16 # 8-byte Folded Reload212; LA32D-ILP32D-NEXT:    ld.w $ra, $sp, 28 # 4-byte Folded Reload213; LA32D-ILP32D-NEXT:    addi.w $sp, $sp, 32214; LA32D-ILP32D-NEXT:    ret215;216; LA64S-LABEL: f:217; LA64S:       # %bb.0:218; LA64S-NEXT:    addi.d $sp, $sp, -32219; LA64S-NEXT:    .cfi_def_cfa_offset 32220; LA64S-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill221; LA64S-NEXT:    fst.d $fs0, $sp, 16 # 8-byte Folded Spill222; LA64S-NEXT:    fst.d $fs1, $sp, 8 # 8-byte Folded Spill223; LA64S-NEXT:    fst.d $fs2, $sp, 0 # 8-byte Folded Spill224; LA64S-NEXT:    .cfi_offset 1, -8225; LA64S-NEXT:    .cfi_offset 56, -16226; LA64S-NEXT:    .cfi_offset 57, -24227; LA64S-NEXT:    .cfi_offset 58, -32228; LA64S-NEXT:    fmov.s $fs0, $fa2229; LA64S-NEXT:    fmov.s $fs1, $fa0230; LA64S-NEXT:    fmov.s $fa0, $fa1231; LA64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)232; LA64S-NEXT:    jirl $ra, $ra, 0233; LA64S-NEXT:    fmov.s $fs2, $fa0234; LA64S-NEXT:    fmov.s $fa0, $fs1235; LA64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)236; LA64S-NEXT:    jirl $ra, $ra, 0237; LA64S-NEXT:    fadd.s $fa0, $fa0, $fs2238; LA64S-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)239; LA64S-NEXT:    jirl $ra, $ra, 0240; LA64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)241; LA64S-NEXT:    jirl $ra, $ra, 0242; LA64S-NEXT:    fmov.s $fs1, $fa0243; LA64S-NEXT:    fmov.s $fa0, $fs0244; LA64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)245; LA64S-NEXT:    jirl $ra, $ra, 0246; LA64S-NEXT:    fadd.s $fa0, $fs1, $fa0247; LA64S-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)248; LA64S-NEXT:    jirl $ra, $ra, 0249; LA64S-NEXT:    movfr2gr.s $a0, $fa0250; LA64S-NEXT:    lu12i.w $a1, -16251; LA64S-NEXT:    or $a0, $a0, $a1252; LA64S-NEXT:    movgr2fr.w $fa0, $a0253; LA64S-NEXT:    fld.d $fs2, $sp, 0 # 8-byte Folded Reload254; LA64S-NEXT:    fld.d $fs1, $sp, 8 # 8-byte Folded Reload255; LA64S-NEXT:    fld.d $fs0, $sp, 16 # 8-byte Folded Reload256; LA64S-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload257; LA64S-NEXT:    addi.d $sp, $sp, 32258; LA64S-NEXT:    ret259;260; LA64F-LP64S-LABEL: f:261; LA64F-LP64S:       # %bb.0:262; LA64F-LP64S-NEXT:    addi.d $sp, $sp, -32263; LA64F-LP64S-NEXT:    .cfi_def_cfa_offset 32264; LA64F-LP64S-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill265; LA64F-LP64S-NEXT:    st.d $fp, $sp, 16 # 8-byte Folded Spill266; LA64F-LP64S-NEXT:    st.d $s0, $sp, 8 # 8-byte Folded Spill267; LA64F-LP64S-NEXT:    .cfi_offset 1, -8268; LA64F-LP64S-NEXT:    .cfi_offset 22, -16269; LA64F-LP64S-NEXT:    .cfi_offset 23, -24270; LA64F-LP64S-NEXT:    move $fp, $a2271; LA64F-LP64S-NEXT:    move $s0, $a0272; LA64F-LP64S-NEXT:    move $a0, $a1273; LA64F-LP64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)274; LA64F-LP64S-NEXT:    jirl $ra, $ra, 0275; LA64F-LP64S-NEXT:    movgr2fr.w $fa0, $a0276; LA64F-LP64S-NEXT:    fst.s $fa0, $sp, 4 # 4-byte Folded Spill277; LA64F-LP64S-NEXT:    move $a0, $s0278; LA64F-LP64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)279; LA64F-LP64S-NEXT:    jirl $ra, $ra, 0280; LA64F-LP64S-NEXT:    movgr2fr.w $fa0, $a0281; LA64F-LP64S-NEXT:    fld.s $fa1, $sp, 4 # 4-byte Folded Reload282; LA64F-LP64S-NEXT:    fadd.s $fa0, $fa0, $fa1283; LA64F-LP64S-NEXT:    movfr2gr.s $a0, $fa0284; LA64F-LP64S-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)285; LA64F-LP64S-NEXT:    jirl $ra, $ra, 0286; LA64F-LP64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)287; LA64F-LP64S-NEXT:    jirl $ra, $ra, 0288; LA64F-LP64S-NEXT:    movgr2fr.w $fa0, $a0289; LA64F-LP64S-NEXT:    fst.s $fa0, $sp, 4 # 4-byte Folded Spill290; LA64F-LP64S-NEXT:    move $a0, $fp291; LA64F-LP64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)292; LA64F-LP64S-NEXT:    jirl $ra, $ra, 0293; LA64F-LP64S-NEXT:    movgr2fr.w $fa0, $a0294; LA64F-LP64S-NEXT:    fld.s $fa1, $sp, 4 # 4-byte Folded Reload295; LA64F-LP64S-NEXT:    fadd.s $fa0, $fa1, $fa0296; LA64F-LP64S-NEXT:    movfr2gr.s $a0, $fa0297; LA64F-LP64S-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)298; LA64F-LP64S-NEXT:    jirl $ra, $ra, 0299; LA64F-LP64S-NEXT:    lu12i.w $a1, -16300; LA64F-LP64S-NEXT:    or $a0, $a0, $a1301; LA64F-LP64S-NEXT:    ld.d $s0, $sp, 8 # 8-byte Folded Reload302; LA64F-LP64S-NEXT:    ld.d $fp, $sp, 16 # 8-byte Folded Reload303; LA64F-LP64S-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload304; LA64F-LP64S-NEXT:    addi.d $sp, $sp, 32305; LA64F-LP64S-NEXT:    ret306;307; LA64F-LP64D-LABEL: f:308; LA64F-LP64D:       # %bb.0:309; LA64F-LP64D-NEXT:    addi.d $sp, $sp, -32310; LA64F-LP64D-NEXT:    .cfi_def_cfa_offset 32311; LA64F-LP64D-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill312; LA64F-LP64D-NEXT:    fst.d $fs0, $sp, 16 # 8-byte Folded Spill313; LA64F-LP64D-NEXT:    fst.d $fs1, $sp, 8 # 8-byte Folded Spill314; LA64F-LP64D-NEXT:    fst.d $fs2, $sp, 0 # 8-byte Folded Spill315; LA64F-LP64D-NEXT:    .cfi_offset 1, -8316; LA64F-LP64D-NEXT:    .cfi_offset 56, -16317; LA64F-LP64D-NEXT:    .cfi_offset 57, -24318; LA64F-LP64D-NEXT:    .cfi_offset 58, -32319; LA64F-LP64D-NEXT:    fmov.s $fs0, $fa2320; LA64F-LP64D-NEXT:    fmov.s $fs1, $fa0321; LA64F-LP64D-NEXT:    fmov.s $fa0, $fa1322; LA64F-LP64D-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)323; LA64F-LP64D-NEXT:    jirl $ra, $ra, 0324; LA64F-LP64D-NEXT:    fmov.s $fs2, $fa0325; LA64F-LP64D-NEXT:    fmov.s $fa0, $fs1326; LA64F-LP64D-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)327; LA64F-LP64D-NEXT:    jirl $ra, $ra, 0328; LA64F-LP64D-NEXT:    fadd.s $fa0, $fa0, $fs2329; LA64F-LP64D-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)330; LA64F-LP64D-NEXT:    jirl $ra, $ra, 0331; LA64F-LP64D-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)332; LA64F-LP64D-NEXT:    jirl $ra, $ra, 0333; LA64F-LP64D-NEXT:    fmov.s $fs1, $fa0334; LA64F-LP64D-NEXT:    fmov.s $fa0, $fs0335; LA64F-LP64D-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)336; LA64F-LP64D-NEXT:    jirl $ra, $ra, 0337; LA64F-LP64D-NEXT:    fadd.s $fa0, $fs1, $fa0338; LA64F-LP64D-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)339; LA64F-LP64D-NEXT:    jirl $ra, $ra, 0340; LA64F-LP64D-NEXT:    movfr2gr.s $a0, $fa0341; LA64F-LP64D-NEXT:    lu12i.w $a1, -16342; LA64F-LP64D-NEXT:    or $a0, $a0, $a1343; LA64F-LP64D-NEXT:    movgr2fr.w $fa0, $a0344; LA64F-LP64D-NEXT:    fld.d $fs2, $sp, 0 # 8-byte Folded Reload345; LA64F-LP64D-NEXT:    fld.d $fs1, $sp, 8 # 8-byte Folded Reload346; LA64F-LP64D-NEXT:    fld.d $fs0, $sp, 16 # 8-byte Folded Reload347; LA64F-LP64D-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload348; LA64F-LP64D-NEXT:    addi.d $sp, $sp, 32349; LA64F-LP64D-NEXT:    ret350;351; LA64D-LP64S-LABEL: f:352; LA64D-LP64S:       # %bb.0:353; LA64D-LP64S-NEXT:    addi.d $sp, $sp, -32354; LA64D-LP64S-NEXT:    .cfi_def_cfa_offset 32355; LA64D-LP64S-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill356; LA64D-LP64S-NEXT:    st.d $fp, $sp, 16 # 8-byte Folded Spill357; LA64D-LP64S-NEXT:    st.d $s0, $sp, 8 # 8-byte Folded Spill358; LA64D-LP64S-NEXT:    .cfi_offset 1, -8359; LA64D-LP64S-NEXT:    .cfi_offset 22, -16360; LA64D-LP64S-NEXT:    .cfi_offset 23, -24361; LA64D-LP64S-NEXT:    move $fp, $a2362; LA64D-LP64S-NEXT:    move $s0, $a0363; LA64D-LP64S-NEXT:    move $a0, $a1364; LA64D-LP64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)365; LA64D-LP64S-NEXT:    jirl $ra, $ra, 0366; LA64D-LP64S-NEXT:    movgr2fr.w $fa0, $a0367; LA64D-LP64S-NEXT:    fst.s $fa0, $sp, 4 # 4-byte Folded Spill368; LA64D-LP64S-NEXT:    move $a0, $s0369; LA64D-LP64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)370; LA64D-LP64S-NEXT:    jirl $ra, $ra, 0371; LA64D-LP64S-NEXT:    movgr2fr.w $fa0, $a0372; LA64D-LP64S-NEXT:    fld.s $fa1, $sp, 4 # 4-byte Folded Reload373; LA64D-LP64S-NEXT:    fadd.s $fa0, $fa0, $fa1374; LA64D-LP64S-NEXT:    movfr2gr.s $a0, $fa0375; LA64D-LP64S-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)376; LA64D-LP64S-NEXT:    jirl $ra, $ra, 0377; LA64D-LP64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)378; LA64D-LP64S-NEXT:    jirl $ra, $ra, 0379; LA64D-LP64S-NEXT:    movgr2fr.w $fa0, $a0380; LA64D-LP64S-NEXT:    fst.s $fa0, $sp, 4 # 4-byte Folded Spill381; LA64D-LP64S-NEXT:    move $a0, $fp382; LA64D-LP64S-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)383; LA64D-LP64S-NEXT:    jirl $ra, $ra, 0384; LA64D-LP64S-NEXT:    movgr2fr.w $fa0, $a0385; LA64D-LP64S-NEXT:    fld.s $fa1, $sp, 4 # 4-byte Folded Reload386; LA64D-LP64S-NEXT:    fadd.s $fa0, $fa1, $fa0387; LA64D-LP64S-NEXT:    movfr2gr.s $a0, $fa0388; LA64D-LP64S-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)389; LA64D-LP64S-NEXT:    jirl $ra, $ra, 0390; LA64D-LP64S-NEXT:    lu12i.w $a1, -16391; LA64D-LP64S-NEXT:    or $a0, $a0, $a1392; LA64D-LP64S-NEXT:    ld.d $s0, $sp, 8 # 8-byte Folded Reload393; LA64D-LP64S-NEXT:    ld.d $fp, $sp, 16 # 8-byte Folded Reload394; LA64D-LP64S-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload395; LA64D-LP64S-NEXT:    addi.d $sp, $sp, 32396; LA64D-LP64S-NEXT:    ret397;398; LA64D-LP64D-LABEL: f:399; LA64D-LP64D:       # %bb.0:400; LA64D-LP64D-NEXT:    addi.d $sp, $sp, -32401; LA64D-LP64D-NEXT:    .cfi_def_cfa_offset 32402; LA64D-LP64D-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill403; LA64D-LP64D-NEXT:    fst.d $fs0, $sp, 16 # 8-byte Folded Spill404; LA64D-LP64D-NEXT:    fst.d $fs1, $sp, 8 # 8-byte Folded Spill405; LA64D-LP64D-NEXT:    fst.d $fs2, $sp, 0 # 8-byte Folded Spill406; LA64D-LP64D-NEXT:    .cfi_offset 1, -8407; LA64D-LP64D-NEXT:    .cfi_offset 56, -16408; LA64D-LP64D-NEXT:    .cfi_offset 57, -24409; LA64D-LP64D-NEXT:    .cfi_offset 58, -32410; LA64D-LP64D-NEXT:    fmov.s $fs0, $fa2411; LA64D-LP64D-NEXT:    fmov.s $fs1, $fa0412; LA64D-LP64D-NEXT:    fmov.s $fa0, $fa1413; LA64D-LP64D-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)414; LA64D-LP64D-NEXT:    jirl $ra, $ra, 0415; LA64D-LP64D-NEXT:    fmov.s $fs2, $fa0416; LA64D-LP64D-NEXT:    fmov.s $fa0, $fs1417; LA64D-LP64D-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)418; LA64D-LP64D-NEXT:    jirl $ra, $ra, 0419; LA64D-LP64D-NEXT:    fadd.s $fa0, $fa0, $fs2420; LA64D-LP64D-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)421; LA64D-LP64D-NEXT:    jirl $ra, $ra, 0422; LA64D-LP64D-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)423; LA64D-LP64D-NEXT:    jirl $ra, $ra, 0424; LA64D-LP64D-NEXT:    fmov.s $fs1, $fa0425; LA64D-LP64D-NEXT:    fmov.s $fa0, $fs0426; LA64D-LP64D-NEXT:    pcaddu18i $ra, %call36(__extendhfsf2)427; LA64D-LP64D-NEXT:    jirl $ra, $ra, 0428; LA64D-LP64D-NEXT:    fadd.s $fa0, $fs1, $fa0429; LA64D-LP64D-NEXT:    pcaddu18i $ra, %call36(__truncsfhf2)430; LA64D-LP64D-NEXT:    jirl $ra, $ra, 0431; LA64D-LP64D-NEXT:    movfr2gr.s $a0, $fa0432; LA64D-LP64D-NEXT:    lu12i.w $a1, -16433; LA64D-LP64D-NEXT:    or $a0, $a0, $a1434; LA64D-LP64D-NEXT:    movgr2fr.w $fa0, $a0435; LA64D-LP64D-NEXT:    fld.d $fs2, $sp, 0 # 8-byte Folded Reload436; LA64D-LP64D-NEXT:    fld.d $fs1, $sp, 8 # 8-byte Folded Reload437; LA64D-LP64D-NEXT:    fld.d $fs0, $sp, 16 # 8-byte Folded Reload438; LA64D-LP64D-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload439; LA64D-LP64D-NEXT:    addi.d $sp, $sp, 32440; LA64D-LP64D-NEXT:    ret441    %d = fadd half %a, %b442    %e = fadd half %d, %c443    ret half %e444}445