diff options
author | Sergei Barannikov <barannikov88@gmail.com> | 2024-11-22 22:29:58 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-22 22:29:58 +0300 |
commit | ad9dcd96dc895f57a3747fe68ef455e0bf43c805 (patch) | |
tree | 8475eed63fd4fc831503538f68fc3ee261928854 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
parent | 1683f84d289348ba6879635c4161979204f75230 (diff) | |
download | llvm-ad9dcd96dc895f57a3747fe68ef455e0bf43c805.zip llvm-ad9dcd96dc895f57a3747fe68ef455e0bf43c805.tar.gz llvm-ad9dcd96dc895f57a3747fe68ef455e0bf43c805.tar.bz2 |
Reland "[ARM] Stop gluing FP comparisons to FMSTAT" (#117248)
Following #116547, this changes the result of `ARMISD::CMPFP*` and the
operand of `ARMISD::FMSTAT` from a special `Glue` type to a normal type.
This change allows comparisons to be CSEd and scheduled around as can be
seen in the test changes.
Note that `ARMISD::FMSTAT` is still glued to its consumer nodes; this is
going to be changed in a separate patch.
This patch also sets `CopyCost` of `cl_FPSCR_NZCV` register class to a
negative value. The reason is the same as for CCR register class: it
makes DAG scheduler and InstrEmitter try to avoid copies of `FPCSR_NZCV`
register to / from virtual registers. Previously, this was not
necessary, since no attempt was made to create copies in the first
place.
`TRI::getCrossCopyRegClass` is modified in a way that prevents DAG
scheduler from copying FPSCR into a virtual register. The register
allocator might need to spill the virtual register, but that only seem
to work in Thumb mode.
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
0 files changed, 0 insertions, 0 deletions