diff options
author | Juzhe-Zhong <juzhe.zhong@rivai.ai> | 2023-06-06 20:04:33 +0800 |
---|---|---|
committer | Pan Li <pan2.li@intel.com> | 2023-06-06 23:14:16 +0800 |
commit | 88604bd17c3d0c82792020b4b0da95627b1caa9d (patch) | |
tree | e8c99d193baea5acf04da8d16f8728b4abe57682 /gcc/expr.cc | |
parent | 4ede915d5dde935a16df2c6640aee5ab22348d30 (diff) | |
download | gcc-88604bd17c3d0c82792020b4b0da95627b1caa9d.zip gcc-88604bd17c3d0c82792020b4b0da95627b1caa9d.tar.gz gcc-88604bd17c3d0c82792020b4b0da95627b1caa9d.tar.bz2 |
RISC-V: Add RVV vwmacc/vwmaccu/vwmaccsu combine lowering optmization
Fix according to comments from Robin of V1 patch.
This patch add combine optimization for following case:
__attribute__ ((noipa)) void
vwmaccsu (int16_t *__restrict dst, int8_t *__restrict a, uint8_t *__restrict b,
int n)
{
for (int i = 0; i < n; i++)
dst[i] += (int16_t) a[i] * (int16_t) b[i];
}
Before this patch:
...
vsext.vf2
vzext.vf2
vmadd.vv
..
After this patch:
...
vwmaccsu.vv
...
gcc/ChangeLog:
* config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
(*single_<optab>mult_plus<mode>): Ditto.
(*double_<optab>mult_plus<mode>): Ditto.
(*sign_zero_extend_fma): Ditto.
(*zero_sign_extend_fma): Ditto.
* config/riscv/riscv-protos.h (enum insn_type): New enum.
gcc/testsuite/ChangeLog:
* gcc.target/riscv/rvv/autovec/widen/widen-8.c: New test.
* gcc.target/riscv/rvv/autovec/widen/widen-9.c: New test.
* gcc.target/riscv/rvv/autovec/widen/widen-complicate-5.c: New test.
* gcc.target/riscv/rvv/autovec/widen/widen-complicate-6.c: New test.
* gcc.target/riscv/rvv/autovec/widen/widen_run-8.c: New test.
* gcc.target/riscv/rvv/autovec/widen/widen_run-9.c: New test.
Diffstat (limited to 'gcc/expr.cc')
0 files changed, 0 insertions, 0 deletions