[llvm] 5aa83eb - [RISCV] Add test for llvm.round.i32.f16 RV64+Zfhmin/Zhinxmin. NFC
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 1 12:16:43 PDT 2024
Author: Craig Topper
Date: 2024-09-01T12:15:00-07:00
New Revision: 5aa83eb677d2f8cba0c2ad3dcc14f3f4e80a0bba
URL: https://github.com/llvm/llvm-project/commit/5aa83eb677d2f8cba0c2ad3dcc14f3f4e80a0bba
DIFF: https://github.com/llvm/llvm-project/commit/5aa83eb677d2f8cba0c2ad3dcc14f3f4e80a0bba.diff
LOG: [RISCV] Add test for llvm.round.i32.f16 RV64+Zfhmin/Zhinxmin. NFC
We have special handling for this in type legalization, but we
didn't have a test.
Added:
Modified:
llvm/test/CodeGen/RISCV/zfhmin-half-intrinsics.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/RISCV/zfhmin-half-intrinsics.ll b/llvm/test/CodeGen/RISCV/zfhmin-half-intrinsics.ll
index bca834b47097bd..0a494878926d19 100644
--- a/llvm/test/CodeGen/RISCV/zfhmin-half-intrinsics.ll
+++ b/llvm/test/CodeGen/RISCV/zfhmin-half-intrinsics.ll
@@ -133,3 +133,55 @@ define iXLen @lround_f16(half %a) nounwind {
%1 = call iXLen @llvm.lround.iXLen.f16(half %a)
ret iXLen %1
}
+
+define i32 @lround_i32_f16(half %a) nounwind {
+; RV32IZFHMIN-LABEL: lround_i32_f16:
+; RV32IZFHMIN: # %bb.0:
+; RV32IZFHMIN-NEXT: fcvt.s.h fa5, fa0
+; RV32IZFHMIN-NEXT: fcvt.w.s a0, fa5, rmm
+; RV32IZFHMIN-NEXT: ret
+;
+; RV64IZFHMIN-LABEL: lround_i32_f16:
+; RV64IZFHMIN: # %bb.0:
+; RV64IZFHMIN-NEXT: fcvt.s.h fa5, fa0
+; RV64IZFHMIN-NEXT: fcvt.w.s a0, fa5, rmm
+; RV64IZFHMIN-NEXT: ret
+;
+; RV32IDZFHMIN-LABEL: lround_i32_f16:
+; RV32IDZFHMIN: # %bb.0:
+; RV32IDZFHMIN-NEXT: fcvt.s.h fa5, fa0
+; RV32IDZFHMIN-NEXT: fcvt.w.s a0, fa5, rmm
+; RV32IDZFHMIN-NEXT: ret
+;
+; RV64IDZFHMIN-LABEL: lround_i32_f16:
+; RV64IDZFHMIN: # %bb.0:
+; RV64IDZFHMIN-NEXT: fcvt.s.h fa5, fa0
+; RV64IDZFHMIN-NEXT: fcvt.w.s a0, fa5, rmm
+; RV64IDZFHMIN-NEXT: ret
+;
+; RV32IZHINXMIN-LABEL: lround_i32_f16:
+; RV32IZHINXMIN: # %bb.0:
+; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a0
+; RV32IZHINXMIN-NEXT: fcvt.w.s a0, a0, rmm
+; RV32IZHINXMIN-NEXT: ret
+;
+; RV64IZHINXMIN-LABEL: lround_i32_f16:
+; RV64IZHINXMIN: # %bb.0:
+; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a0
+; RV64IZHINXMIN-NEXT: fcvt.w.s a0, a0, rmm
+; RV64IZHINXMIN-NEXT: ret
+;
+; RV32IZDINXZHINXMIN-LABEL: lround_i32_f16:
+; RV32IZDINXZHINXMIN: # %bb.0:
+; RV32IZDINXZHINXMIN-NEXT: fcvt.s.h a0, a0
+; RV32IZDINXZHINXMIN-NEXT: fcvt.w.s a0, a0, rmm
+; RV32IZDINXZHINXMIN-NEXT: ret
+;
+; RV64IZDINXZHINXMIN-LABEL: lround_i32_f16:
+; RV64IZDINXZHINXMIN: # %bb.0:
+; RV64IZDINXZHINXMIN-NEXT: fcvt.s.h a0, a0
+; RV64IZDINXZHINXMIN-NEXT: fcvt.w.s a0, a0, rmm
+; RV64IZDINXZHINXMIN-NEXT: ret
+ %1 = call i32 @llvm.lround.i32.f16(half %a)
+ ret i32 %1
+}
More information about the llvm-commits
mailing list