llvm-project/llvm/test/CodeGen/ARM/GlobalISel
Eli Friedman 3f739f736b [SelectionDAG][GISel] Make LegalizeDAG lower FNEG using integer ops.
Previously, if a floating-point type was legal, but FNEG wasn't legal,
we would use FSUB.  Instead, we should use integer ops, to preserve the
semantics.  (Alternatively, there's a compiler-rt call we could use, but
there isn't much reason to use that.)

It turns out we actually are still using this obscure codepath in a few
cases: on some targets, we have "legal" floating-point types that don't
actually support any floating-point operations.  In particular, ARM and
AArch64 are using this path.

The implementation for SelectionDAG is pretty simple because we can
reuse the infrastructure from FCOPYSIGN.

See also 9a3dc3e, the corresponding change to type legalization.

Also includes a "bonus" change to STRICT_FSUB legalization, so we can
lower a STRICT_FSUB to a float libcall.

Includes the changes to both LegalizeDAG and GlobalISel so we don't have
inconsistent results in the future.

Fixes https://bugs.llvm.org/show_bug.cgi?id=46792 .

Differential Revision: https://reviews.llvm.org/D84287
2020-09-23 14:10:33 -07:00
..
arm-call-lowering.ll
arm-instruction-select-cmp.mir
arm-instruction-select-combos.mir
arm-instruction-select.mir
arm-irtranslator.ll
arm-isel-divmod.ll
arm-isel-fp.ll
arm-isel-globals-pic.ll
arm-isel-globals-ropi-rwpi.ll
arm-isel-globals-static.ll
arm-isel.ll
arm-legalize-binops-neon.mir
arm-legalize-binops.mir [SelectionDAG][GISel] Make LegalizeDAG lower FNEG using integer ops. 2020-09-23 14:10:33 -07:00
arm-legalize-bitcounts.mir
arm-legalize-casts.mir
arm-legalize-cmp.mir
arm-legalize-consts.mir
arm-legalize-control-flow.mir
arm-legalize-divmod.mir
arm-legalize-exts.mir
arm-legalize-fp.mir [SelectionDAG][GISel] Make LegalizeDAG lower FNEG using integer ops. 2020-09-23 14:10:33 -07:00
arm-legalize-globals.mir
arm-legalize-load-store.mir
arm-legalize-select.mir
arm-legalize-vfp4.mir
arm-legalizer.mir
arm-param-lowering.ll
arm-regbankselect.mir
arm-select-copy_to_regclass-of-fptosi.mir
arm-select-globals-pic.mir
arm-select-globals-ropi-rwpi.mir
arm-select-globals-static.mir
arm-unsupported.ll [ARM] Supporting lowering of half-precision FP arguments and returns in AArch32's backend 2020-06-18 13:15:13 +01:00
irtranslator-varargs-lowering.ll
pr35375.ll
select-clz.mir
select-dbg.mir
select-fp-const.mir
select-fp.mir
select-neon.mir
select-pkhbt.mir
select-pr35926.mir
select-revsh.mir
thumb-instruction-select-cmp.mir
thumb-isel-globals-pic.ll
thumb-isel-globals-ropi-rwpi.ll
thumb-isel-globals-static.ll
thumb-select-arithmetic-ops.mir
thumb-select-br.mir
thumb-select-casts.mir
thumb-select-exts.mir
thumb-select-globals-pic.mir
thumb-select-globals-ropi-rwpi.mir
thumb-select-globals-static.mir
thumb-select-imm.mir
thumb-select-load-store.mir
thumb-select-logical-ops.mir
thumb-select-phi.mir
thumb-select-select.mir
thumb-select-shifts.mir