[PATCH] D105267: [X86] AVX512FP16 instructions enabling 4/6

Craig Topper via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 18 09:30:08 PDT 2021


craig.topper added inline comments.


================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:1920
+      setOperationAction(ISD::STRICT_FTRUNC,      VT, Legal);
+      setOperationAction(ISD::FRINT,              VT, Legal);
+      setOperationAction(ISD::STRICT_FRINT,       VT, Legal);
----------------
LuoYuanke wrote:
> Does this node means "round to int"? What's the difference to "FNEARBYINT"?
rint and nearbyint are both C math library functions. rint raises an exception if the rounding isn't exact, nearbyint doesn't.


================
Comment at: llvm/lib/Target/X86/X86InstrFoldTables.cpp:3037
   { X86::VSQRTSDr_Int,             X86::VSQRTSDm_Int,             TB_NO_REVERSE },
+  { X86::VSQRTSHZr,                X86::VSQRTSHZm,                0 },
+  { X86::VSQRTSHZr_Int,            X86::VSQRTSHZm_Int,            TB_NO_REVERSE },
----------------
LuoYuanke wrote:
> Why no TB_NO_REVERSE for it?
Only the _Int need TB_NO_REVERSE because the memory type is 16 bits but the register class is VR128X so the sizes are different. The unfolding code would use the size of the register class to do the unfold and create a vmovaps/vmovups which would increase the size of the load.

For VSQRTZr, the register class is FR16X and the memory size is 16 bits so they match.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D105267



More information about the cfe-commits mailing list