]> gcc.gnu.org Git - gcc.git/commit
RISC-V: Support neg VLS auto-vectorization
authorJuzhe-Zhong <juzhe.zhong@rivai.ai>
Tue, 8 Aug 2023 03:06:24 +0000 (11:06 +0800)
committerLehua Ding <lehua.ding@rivai.ai>
Tue, 8 Aug 2023 03:38:11 +0000 (11:38 +0800)
commit8f4d2a4c984f168b8444672aa8f4a103e845dfbf
treea1aa27646421b537ef67fe8e344039348a2d09ef
parent99e47791a901e71eb2475e3987c51d07f37430a5
RISC-V: Support neg VLS auto-vectorization

#include "riscv_vector.h"

#define DEF_OP_V(PREFIX, NUM, TYPE, OP)                                        \
  void __attribute__ ((noinline, noclone))                                     \
  PREFIX##_##TYPE##NUM (TYPE *restrict a, TYPE *restrict b)                    \
  {                                                                            \
    for (int i = 0; i < NUM; ++i)                                              \
      a[i] = OP b[i];                                                          \
  }

DEF_OP_V (neg, 16, int32_t, -)

After this patch:

neg_int32_t16:
vsetivli zero,16,e32,mf2,ta,ma
vle32.v v1,0(a1)
vneg.v v1,v1
vse32.v v1,0(a0)
ret

gcc/ChangeLog:

* config/riscv/autovec-vls.md (<optab><mode>2): Add VLS neg.
* config/riscv/vector.md: Ditto.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/vls/def.h: Ditto.
* gcc.target/riscv/rvv/autovec/vls/neg-1.c: New test.
gcc/config/riscv/autovec-vls.md
gcc/config/riscv/vector.md
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/def.h
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/neg-1.c [new file with mode: 0644]
This page took 0.065076 seconds and 6 git commands to generate.