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

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to