diff options
| author | Sergei Barannikov <barannikov88@gmail.com> | 2024-11-20 16:07:05 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-20 16:07:05 +0300 |
| commit | 8c56dd3040f295874e3d5742b5dfc109adf1f728 (patch) | |
| tree | d3c46369878ebf300396d786797cf950d9b793e7 /llvm/lib/Support/LockFileManager.cpp | |
| parent | 1ca853b2ee1b68daaec6fdc23a085755146d102d (diff) | |
| download | llvm-8c56dd3040f295874e3d5742b5dfc109adf1f728.zip llvm-8c56dd3040f295874e3d5742b5dfc109adf1f728.tar.gz llvm-8c56dd3040f295874e3d5742b5dfc109adf1f728.tar.bz2 | |
[ARM] Stop gluing FP comparisons to FMSTAT (#116676)
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.
There might be a case when a copy can't be avoided (although not found
in existing tests). If a copy is necessary, the virtual register will be
created with `cl_FPSCR_NZCV` register class. If this register class is
inappropriate, `TRI::getCrossCopyRegClass` should be modified to return
the correct class.
Pull Request: https://github.com/llvm/llvm-project/pull/116676
Diffstat (limited to 'llvm/lib/Support/LockFileManager.cpp')
0 files changed, 0 insertions, 0 deletions
