[PATCH] D145867: [X86][FP16] Optimize FMAXNUM/FMINNUM into SMAX/SMIN for FP16 emulation under fast math

Phoebe Wang via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Mar 12 06:12:02 PDT 2023


pengfei added inline comments.


================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:53165
   EVT VT = N->getValueType(0);
-  if (Subtarget.useSoftFloat() || isSoftFP16(VT, Subtarget))
+  if (Subtarget.useSoftFloat() || isSoftFP16(VT, Subtarget)) {
+    if (DAG.getTarget().Options.NoNaNsFPMath || N->getFlags().hasNoNaNs()) {
----------------
RKSimon wrote:
> We might need to improve soft float test coverage?
Good catch! I didn't intend to support soft float. And IIRC, we have problems in supporting soft float. So bail it out.


================
Comment at: llvm/test/CodeGen/X86/half.ll:1368
+; CHECK-LIBCALL-NEXT:    pinsrw $0, %eax, %xmm0
+; CHECK-LIBCALL-NEXT:    retq
+;
----------------
RKSimon wrote:
> It seems a shame to scalarize this when we're already on the FPU, and we have pminsw/pmaxsw since SSE2
Good point! We can vectorize it first, though we still need to improve the `f16` extract.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145867/new/

https://reviews.llvm.org/D145867



More information about the llvm-commits mailing list