Hi, APX NDD patches have been posted at https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636604.html
Thanks to Hongtao's review, the V2 patch adds support of zext sematic with memory input as NDD by default clear upper bits of dest for any operand size. Also we support TImode shift with new split helper functions, which allows NDD form split but still restric the memory src usage as in post-reload splitter the register number is restricted, and no new register can be used for shld/shrd. Also fixed several typo/formatting/redundant code. Bootstrapped/regtested on x86_64-pc-linux-gnu{-m32,} and sde. OK for trunk? Hongyu Wang (8): [APX NDD] Restrict TImode register usage when NDD enabled [APX NDD] Disable seg_prefixed memory usage for NDD add [APX NDD] Support APX NDD for left shift insns [APX NDD] Support APX NDD for right shift insns [APX NDD] Support APX NDD for rotate insns [APX NDD] Support APX NDD for shld/shrd insns [APX NDD] Support APX NDD for cmove insns [APX NDD] Support TImode shift for NDD Kong Lingling (9): [APX NDD] Support Intel APX NDD for legacy add insn [APX NDD] Support APX NDD for optimization patterns of add [APX NDD] Support APX NDD for adc insns [APX NDD] Support APX NDD for sub insns [APX NDD] Support APX NDD for sbb insn [APX NDD] Support APX NDD for neg insn [APX NDD] Support APX NDD for not insn [APX NDD] Support APX NDD for and insn [APX NDD] Support APX NDD for or/xor insn gcc/config/i386/constraints.md | 5 + gcc/config/i386/i386-expand.cc | 164 +- gcc/config/i386/i386-options.cc | 2 + gcc/config/i386/i386-protos.h | 16 +- gcc/config/i386/i386.cc | 40 +- gcc/config/i386/i386.md | 2323 +++++++++++------ gcc/testsuite/gcc.target/i386/apx-ndd-adc.c | 15 + gcc/testsuite/gcc.target/i386/apx-ndd-cmov.c | 16 + gcc/testsuite/gcc.target/i386/apx-ndd-sbb.c | 6 + .../gcc.target/i386/apx-ndd-shld-shrd.c | 24 + .../gcc.target/i386/apx-ndd-ti-shift.c | 91 + gcc/testsuite/gcc.target/i386/apx-ndd.c | 202 ++ 12 files changed, 2149 insertions(+), 755 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/apx-ndd-adc.c create mode 100644 gcc/testsuite/gcc.target/i386/apx-ndd-cmov.c create mode 100644 gcc/testsuite/gcc.target/i386/apx-ndd-sbb.c create mode 100644 gcc/testsuite/gcc.target/i386/apx-ndd-shld-shrd.c create mode 100644 gcc/testsuite/gcc.target/i386/apx-ndd-ti-shift.c create mode 100644 gcc/testsuite/gcc.target/i386/apx-ndd.c -- 2.31.1