aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
diff options
context:
space:
mode:
authorSergei Barannikov <barannikov88@gmail.com>2024-11-22 22:29:58 +0300
committerGitHub <noreply@github.com>2024-11-22 22:29:58 +0300
commitad9dcd96dc895f57a3747fe68ef455e0bf43c805 (patch)
tree8475eed63fd4fc831503538f68fc3ee261928854 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
parent1683f84d289348ba6879635c4161979204f75230 (diff)
downloadllvm-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