Richard Henderson <richard.hender...@linaro.org> writes: > I have written patches for FEAT_CMPBR support in QEMU, and wanted to > test them out with gcc. The easiest way, seemed to be bootstrapping > gcc with cmpbr enabled. The attempt failed on stage1 libgcc. > > My bug report is target/121385. Pinski did some analyis, which was > very helpful, and guides most of this patch set. > > Pinski filed a second PR, target/121388, vs bid_binarydecimal.c. I > think that might now be in hiding rather than actually being fixed, > since I did nothing that should have affected changing the sense of > the branch during cfglayout. I suspect we need to accept a symmetric > range of constants for all comparisons, expand those that don't fit > to cmp+bcond. > > While we could have post-reload splitting, I'm not sure how split works > with shorten_branches, so we might have to retain cmp+bcond all the way > through to output. If that's true, and we assume that performant cpus > will fuse cmp+bcond anyway, it might not be worth bothering to split. > > My bootstrap under emulation is still going, 8 hours in. In hindsight > I should have used a bigger machine, but laziness used the one with > the chroot already set up. > > This passes native bootstrap and make check on a neoverse-n1, so I > don't seem to have broken anything obvious.
Thanks for doing this. I've replied to patches 6 and 8, but otherwise the series looks really good to me. I know Karl has been working on this too, but I agree with the direction that the series is going in, so I think we should rebase any in-progress work on top of it. Please give others a day or so to comment though. Richard > r~ > > > Richard Henderson (8): > aarch64: Drop label format argument from aarch64_gen_far_branch > aarch64: Fix spelling of BRANCH_LEN_N_1KiB > aarch64: Drop cbranch<SHORT>4 expander > aarch64: Disable TARGET_CMPBR with aarch64_track_speculation > aarch64: Use aarch64_gen_compare_zero_and_branch in aarch64_restore_za > aarch64: Add cc clobber to compare-and-branch patterns > aarch64: Consider TARGET_CMPBR in rtx costs > aarch64: Use cc when CB/CBB/CBH is out-of-range > > gcc/config/aarch64/aarch64-protos.h | 5 +- > gcc/config/aarch64/aarch64.h | 5 +- > gcc/config/aarch64/aarch64-sme.md | 3 +- > gcc/config/aarch64/aarch64.cc | 22 +++++-- > gcc/config/aarch64/aarch64.md | 94 ++++++++++++++--------------- > 5 files changed, 74 insertions(+), 55 deletions(-)