brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · 67aa4ca Raw
141 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv64 -verify-machineinstrs \3; RUN:   -target-abi lp64 -disable-strictnode-mutation < %s | \4; RUN:   FileCheck %s -check-prefixes=CHECK,RV64I5; RUN: llc -mtriple=riscv64 -mattr=+zfh -verify-machineinstrs \6; RUN:   -target-abi lp64f -disable-strictnode-mutation < %s | \7; RUN:   FileCheck %s -check-prefixes=CHECK,RV64IZFH8; RUN: llc -mtriple=riscv64 -mattr=+zhinx -verify-machineinstrs \9; RUN:   -target-abi lp64 -disable-strictnode-mutation < %s | \10; RUN:   FileCheck %s -check-prefixes=CHECK,RV64IZHINX11 12define i128 @fptosi_f16_to_i128(half %a) nounwind strictfp {13; RV64I-LABEL: fptosi_f16_to_i128:14; RV64I:       # %bb.0:15; RV64I-NEXT:    addi sp, sp, -1616; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill17; RV64I-NEXT:    call __extendhfsf218; RV64I-NEXT:    call __fixsfti19; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload20; RV64I-NEXT:    addi sp, sp, 1621; RV64I-NEXT:    ret22;23; RV64IZFH-LABEL: fptosi_f16_to_i128:24; RV64IZFH:       # %bb.0:25; RV64IZFH-NEXT:    addi sp, sp, -1626; RV64IZFH-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill27; RV64IZFH-NEXT:    call __fixhfti28; RV64IZFH-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload29; RV64IZFH-NEXT:    addi sp, sp, 1630; RV64IZFH-NEXT:    ret31;32; RV64IZHINX-LABEL: fptosi_f16_to_i128:33; RV64IZHINX:       # %bb.0:34; RV64IZHINX-NEXT:    addi sp, sp, -1635; RV64IZHINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill36; RV64IZHINX-NEXT:    call __fixhfti37; RV64IZHINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload38; RV64IZHINX-NEXT:    addi sp, sp, 1639; RV64IZHINX-NEXT:    ret40  %1 = call i128 @llvm.experimental.constrained.fptosi.i128.f16(half %a, metadata !"fpexcept.strict")41  ret i128 %142}43 44define i128 @fptoui_f16_to_i128(half %a) nounwind strictfp {45; RV64I-LABEL: fptoui_f16_to_i128:46; RV64I:       # %bb.0:47; RV64I-NEXT:    addi sp, sp, -1648; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill49; RV64I-NEXT:    call __extendhfsf250; RV64I-NEXT:    call __fixunssfti51; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload52; RV64I-NEXT:    addi sp, sp, 1653; RV64I-NEXT:    ret54;55; RV64IZFH-LABEL: fptoui_f16_to_i128:56; RV64IZFH:       # %bb.0:57; RV64IZFH-NEXT:    addi sp, sp, -1658; RV64IZFH-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill59; RV64IZFH-NEXT:    call __fixunshfti60; RV64IZFH-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload61; RV64IZFH-NEXT:    addi sp, sp, 1662; RV64IZFH-NEXT:    ret63;64; RV64IZHINX-LABEL: fptoui_f16_to_i128:65; RV64IZHINX:       # %bb.0:66; RV64IZHINX-NEXT:    addi sp, sp, -1667; RV64IZHINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill68; RV64IZHINX-NEXT:    call __fixunshfti69; RV64IZHINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload70; RV64IZHINX-NEXT:    addi sp, sp, 1671; RV64IZHINX-NEXT:    ret72  %1 = call i128 @llvm.experimental.constrained.fptoui.i128.f16(half %a, metadata !"fpexcept.strict")73  ret i128 %174}75 76define half @sitofp_i128_to_f16(i128 %a) nounwind strictfp {77; RV64I-LABEL: sitofp_i128_to_f16:78; RV64I:       # %bb.0:79; RV64I-NEXT:    addi sp, sp, -1680; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill81; RV64I-NEXT:    call __floattisf82; RV64I-NEXT:    call __truncsfhf283; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload84; RV64I-NEXT:    addi sp, sp, 1685; RV64I-NEXT:    ret86;87; RV64IZFH-LABEL: sitofp_i128_to_f16:88; RV64IZFH:       # %bb.0:89; RV64IZFH-NEXT:    addi sp, sp, -1690; RV64IZFH-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill91; RV64IZFH-NEXT:    call __floattihf92; RV64IZFH-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload93; RV64IZFH-NEXT:    addi sp, sp, 1694; RV64IZFH-NEXT:    ret95;96; RV64IZHINX-LABEL: sitofp_i128_to_f16:97; RV64IZHINX:       # %bb.0:98; RV64IZHINX-NEXT:    addi sp, sp, -1699; RV64IZHINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill100; RV64IZHINX-NEXT:    call __floattihf101; RV64IZHINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload102; RV64IZHINX-NEXT:    addi sp, sp, 16103; RV64IZHINX-NEXT:    ret104  %1 = call half @llvm.experimental.constrained.sitofp.f16.i128(i128 %a, metadata !"round.dynamic", metadata !"fpexcept.strict")105  ret half %1106}107 108define half @uitofp_i128_to_f16(i128 %a) nounwind strictfp {109; RV64I-LABEL: uitofp_i128_to_f16:110; RV64I:       # %bb.0:111; RV64I-NEXT:    addi sp, sp, -16112; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill113; RV64I-NEXT:    call __floatuntisf114; RV64I-NEXT:    call __truncsfhf2115; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload116; RV64I-NEXT:    addi sp, sp, 16117; RV64I-NEXT:    ret118;119; RV64IZFH-LABEL: uitofp_i128_to_f16:120; RV64IZFH:       # %bb.0:121; RV64IZFH-NEXT:    addi sp, sp, -16122; RV64IZFH-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill123; RV64IZFH-NEXT:    call __floatuntihf124; RV64IZFH-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload125; RV64IZFH-NEXT:    addi sp, sp, 16126; RV64IZFH-NEXT:    ret127;128; RV64IZHINX-LABEL: uitofp_i128_to_f16:129; RV64IZHINX:       # %bb.0:130; RV64IZHINX-NEXT:    addi sp, sp, -16131; RV64IZHINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill132; RV64IZHINX-NEXT:    call __floatuntihf133; RV64IZHINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload134; RV64IZHINX-NEXT:    addi sp, sp, 16135; RV64IZHINX-NEXT:    ret136  %1 = call half @llvm.experimental.constrained.uitofp.f16.i128(i128 %a, metadata !"round.dynamic", metadata !"fpexcept.strict")137  ret half %1138}139;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:140; CHECK: {{.*}}141