48 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=riscv64 -mattr=+zfhmin \3; RUN: -verify-machineinstrs -target-abi lp64f | \4; RUN: FileCheck -check-prefix=CHECKIZFHMIN %s5; RUN: llc < %s -mtriple=riscv64 -mattr=+d \6; RUN: -mattr=+zfhmin -verify-machineinstrs -target-abi lp64d | \7; RUN: FileCheck -check-prefix=CHECKIZFHMIN %s8; RUN: llc < %s -mtriple=riscv64 -mattr=+zhinxmin \9; RUN: -verify-machineinstrs -target-abi lp64 | \10; RUN: FileCheck -check-prefix=CHECKIZHINXMIN %s11; RUN: llc < %s -mtriple=riscv64 -mattr=+zdinx \12; RUN: -mattr=+zhinxmin -verify-machineinstrs -target-abi lp64 | \13; RUN: FileCheck -check-prefix=CHECKIZHINXMIN %s14 15; These intrinsics require half and i64 to be legal types.16 17define i64 @llrint_f16(half %a) nounwind {18; CHECKIZFHMIN-LABEL: llrint_f16:19; CHECKIZFHMIN: # %bb.0:20; CHECKIZFHMIN-NEXT: fcvt.s.h fa5, fa021; CHECKIZFHMIN-NEXT: fcvt.l.s a0, fa522; CHECKIZFHMIN-NEXT: ret23;24; CHECKIZHINXMIN-LABEL: llrint_f16:25; CHECKIZHINXMIN: # %bb.0:26; CHECKIZHINXMIN-NEXT: fcvt.s.h a0, a027; CHECKIZHINXMIN-NEXT: fcvt.l.s a0, a028; CHECKIZHINXMIN-NEXT: ret29 %1 = call i64 @llvm.llrint.i64.f16(half %a)30 ret i64 %131}32 33define i64 @llround_f16(half %a) nounwind {34; CHECKIZFHMIN-LABEL: llround_f16:35; CHECKIZFHMIN: # %bb.0:36; CHECKIZFHMIN-NEXT: fcvt.s.h fa5, fa037; CHECKIZFHMIN-NEXT: fcvt.l.s a0, fa5, rmm38; CHECKIZFHMIN-NEXT: ret39;40; CHECKIZHINXMIN-LABEL: llround_f16:41; CHECKIZHINXMIN: # %bb.0:42; CHECKIZHINXMIN-NEXT: fcvt.s.h a0, a043; CHECKIZHINXMIN-NEXT: fcvt.l.s a0, a0, rmm44; CHECKIZHINXMIN-NEXT: ret45 %1 = call i64 @llvm.llround.i64.f16(half %a)46 ret i64 %147}48