From: MITSUNARI Shigeo <[email protected]>
Changes since v3:
- Simplified *bmi2_umul<mode>3_highpart per Richard Henderson's suggestion:
use "%0,%0,%2" so both outputs alias the same register, eliminating the
scratch register and clobber. (v3 [2/3])
- Removed the peephole2 patch (v3 [3/3]); the simplified pattern now
covers that case directly.
- Moved bmi2-mulx-highpart-2.c (loop test) into [2/2].
- [1/2] is unchanged from v3 [1/3].
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 | 90 +++++++++++++------
.../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, 134 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