diff options
author | Juzhe-Zhong <juzhe.zhong@rivai.ai> | 2023-08-08 11:06:24 +0800 |
---|---|---|
committer | Lehua Ding <lehua.ding@rivai.ai> | 2023-08-08 11:38:11 +0800 |
commit | 8f4d2a4c984f168b8444672aa8f4a103e845dfbf (patch) | |
tree | a1aa27646421b537ef67fe8e344039348a2d09ef /gcc/tree-vectorizer.h | |
parent | 99e47791a901e71eb2475e3987c51d07f37430a5 (diff) | |
download | gcc-8f4d2a4c984f168b8444672aa8f4a103e845dfbf.zip gcc-8f4d2a4c984f168b8444672aa8f4a103e845dfbf.tar.gz gcc-8f4d2a4c984f168b8444672aa8f4a103e845dfbf.tar.bz2 |
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.
Diffstat (limited to 'gcc/tree-vectorizer.h')
0 files changed, 0 insertions, 0 deletions