Revert rGe6ccb57bb3f6b761f2310e97fd6ca99eff42f73e "[SLP] Add cost model for `llvm...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rv64zfh-half-intrinsics-strict.ll
blobf7ffc4c30b20a1c49c9daa0023c9bfa9e10a2f04
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=riscv64 -mattr=+zfh \
3 ; RUN:   -verify-machineinstrs -target-abi lp64f -disable-strictnode-mutation \
4 ; RUN:   | FileCheck -check-prefix=RV64IZFH %s
5 ; RUN: llc < %s -mtriple=riscv64 -mattr=+d \
6 ; RUN:   -mattr=+zfh -verify-machineinstrs -target-abi lp64d \
7 ; RUN:   -disable-strictnode-mutation | FileCheck -check-prefix=RV64IDZFH %s
9 ; These intrinsics require half and i64 to be legal types.
11 declare i64 @llvm.experimental.constrained.llrint.i64.f16(half, metadata, metadata)
13 define i64 @llrint_f16(half %a) nounwind strictfp {
14 ; RV64IZFH-LABEL: llrint_f16:
15 ; RV64IZFH:       # %bb.0:
16 ; RV64IZFH-NEXT:    fcvt.l.h a0, fa0
17 ; RV64IZFH-NEXT:    ret
19 ; RV64IDZFH-LABEL: llrint_f16:
20 ; RV64IDZFH:       # %bb.0:
21 ; RV64IDZFH-NEXT:    fcvt.l.h a0, fa0
22 ; RV64IDZFH-NEXT:    ret
23   %1 = call i64 @llvm.experimental.constrained.llrint.i64.f16(half %a, metadata !"round.dynamic", metadata !"fpexcept.strict") strictfp
24   ret i64 %1
27 declare i64 @llvm.experimental.constrained.llround.i64.f16(half, metadata)
29 define i64 @llround_f16(half %a) nounwind strictfp {
30 ; RV64IZFH-LABEL: llround_f16:
31 ; RV64IZFH:       # %bb.0:
32 ; RV64IZFH-NEXT:    fcvt.l.h a0, fa0, rmm
33 ; RV64IZFH-NEXT:    ret
35 ; RV64IDZFH-LABEL: llround_f16:
36 ; RV64IDZFH:       # %bb.0:
37 ; RV64IDZFH-NEXT:    fcvt.l.h a0, fa0, rmm
38 ; RV64IDZFH-NEXT:    ret
39   %1 = call i64 @llvm.experimental.constrained.llround.i64.f16(half %a, metadata !"fpexcept.strict") strictfp
40   ret i64 %1