Changes from v4: 1. Remove option "-fwrapv" from gcc.dg/torture/bitint-84.c, which came from its origin gcc.dg/torture/bitint-64.c, but interferes with the result.
2. Other fixes from Jakub's review on v4. In particular, BEXTC was modified to not rely on full limb comparision of the partial limbs. This series was bootstrapped and tested on x86_64-linux-gnu and loongarch64-linux-gnu. Yang Yujie (9): bitint: Allow mode promotion of _BitInt types expand: Reduce unneeded _BitInt extensions bitint: Allow unused bits when testing extended _BitInt ABIs bitint: Make sure BEXTC checks extension when optimized bitint: Avoid extending ABI-extended large/huge _BitInts on load bitint: Zero-extend the result of a signed->unsigned widening cast bitint: Do not optimize away conversion to _BitInt before a VCE LoongArch: Prioritize target-specific makefile fragments LoongArch: Add support for _BitInt [PR117599] gcc/config/loongarch/loongarch.cc | 35 +++++++- gcc/config/loongarch/loongarch.h | 4 +- gcc/explow.cc | 24 ++++++ gcc/expr.cc | 12 +++ gcc/expr.h | 4 + gcc/function.cc | 4 + gcc/gimple-lower-bitint.cc | 46 +++++++++-- gcc/match.pd | 19 ++++- gcc/testsuite/gcc.dg/bitintext.h | 56 +++++++++---- gcc/testsuite/gcc.dg/torture/bitint-83.c | 52 ++++++++++++ gcc/testsuite/gcc.dg/torture/bitint-84.c | 18 +++++ .../gcc.target/loongarch/bitint-alignments.c | 58 +++++++++++++ .../gcc.target/loongarch/bitint-args.c | 81 +++++++++++++++++++ .../gcc.target/loongarch/bitint-sizes.c | 60 ++++++++++++++ libgcc/config.host | 31 +++---- libgcc/config/loongarch/libgcc-loongarch.ver | 28 +++++++ libgcc/config/loongarch/t-loongarch | 2 + libgcc/config/loongarch/t-softfp-tf | 1 + 18 files changed, 488 insertions(+), 47 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/bitint-83.c create mode 100644 gcc/testsuite/gcc.dg/torture/bitint-84.c create mode 100644 gcc/testsuite/gcc.target/loongarch/bitint-alignments.c create mode 100644 gcc/testsuite/gcc.target/loongarch/bitint-args.c create mode 100644 gcc/testsuite/gcc.target/loongarch/bitint-sizes.c create mode 100644 libgcc/config/loongarch/libgcc-loongarch.ver -- 2.46.0