https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66262
--- Comment #17 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Xi Ruoyao <xry...@gcc.gnu.org>: https://gcc.gnu.org/g:ee4a6343225b6e44b3d2b2c90c355c21f7ec6855 commit r15-2931-gee4a6343225b6e44b3d2b2c90c355c21f7ec6855 Author: Xi Ruoyao <xry...@xry111.site> Date: Thu Jul 4 02:49:28 2024 +0800 LoongArch: Implement scalar isinf, isnormal, and isfinite via fclass Doing so can avoid loading FP constants from the memory. It also partially fixes PR 66262 as fclass does not signal on sNaN. gcc/ChangeLog: * config/loongarch/loongarch.md (extendsidi2): Add ("=r", "f") alternative and use movfr2gr.s for it. The spec clearly states movfr2gr.s sign extends the value to GRLEN. (fclass_<fmt>): Make the result SImode instead of a floating mode. The fclass results are really not FP values. (FCLASS_MASK): New define_int_iterator. (fclass_optab): New define_int_attr. (<FCLASS_MASK:fclass_optab><ANYF:mode>): New define_expand template. gcc/testsuite/ChangeLog: * gcc.target/loongarch/fclass-compile.c: New test. * gcc.target/loongarch/fclass-run.c: New test.