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