From: MITSUNARI Shigeo <[email protected]>
Changes since v4:
- Added guard `GET_MODE_BITSIZE (wide_mode) <= BITS_PER_WORD` in [1/2]
to skip the 64-bit high-part multiply path on targets where the widened
mode does not fit in a single register (e.g. 32-bit targets).
- Added missing gcc/testsuite/ChangeLog entry for mulq-highpart.c in [1/2].
- [2/2] is unchanged from v4.
MITSUNARI Shigeo (2):
expmed: Optimize 32-bit unsigned division by constants on 64-bit
targets
i386: Add BMI2 MULX pattern for highpart-only multiplication
gcc/config/i386/i386.md | 15 +++
gcc/expmed.cc | 93 +++++++++++++------
.../gcc.target/i386/bmi2-mulx-highpart-1.c | 18 ++++
.../gcc.target/i386/bmi2-mulx-highpart-2.c | 19 ++++
gcc/testsuite/gcc.target/i386/mulq-highpart.c | 19 ++++
5 files changed, 137 insertions(+), 27 deletions(-)
create mode 100644 gcc/testsuite/gcc.target/i386/bmi2-mulx-highpart-1.c
create mode 100644 gcc/testsuite/gcc.target/i386/bmi2-mulx-highpart-2.c
create mode 100644 gcc/testsuite/gcc.target/i386/mulq-highpart.c
--
2.43.0