aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.cc
diff options
context:
space:
mode:
authorPan Li <pan2.li@intel.com>2023-11-10 10:57:00 +0800
committerPan Li <pan2.li@intel.com>2023-11-10 14:35:24 +0800
commite7f4040d9d6ec40c48ada940168885d7dde03af9 (patch)
tree93b643f456f1b7b482241edb103f77f8500a4d7f /gcc/expr.cc
parent879cf9ff45d94065d89e24b71c6b27c7076ac518 (diff)
downloadgcc-e7f4040d9d6ec40c48ada940168885d7dde03af9.zip
gcc-e7f4040d9d6ec40c48ada940168885d7dde03af9.tar.gz
gcc-e7f4040d9d6ec40c48ada940168885d7dde03af9.tar.bz2
RISC-V: Support vec_init for trailing same element
This patch would like to support the vec_init for the trailing same element in the array. For example as below typedef double vnx16df __attribute__ ((vector_size (128))); __attribute__ ((noipa)) void f_vnx16df (double a, double b, double *out) { vnx16df v = {a, a, a, b, b, b, b, b, b, b, b, b, b, b, b, b}; *(vnx16df *) out = v; } Before this patch: f_vnx16df: vsetivli zero,16,e64,m8,ta,ma vfmv.v.f v8,fa0 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vfslide1down.vf v8,v8,fa1 vs8r.v v8,0(a0) ret After this patch: f_vnx16df: vsetivli zero,16,e64,m8,ta,ma vfmv.v.f v16,fa1 vfslide1up.vf v8,v16,fa0 vmv8r.v v16,v8 vfslide1up.vf v8,v16,fa0 vmv8r.v v16,v8 vfslide1up.vf v8,v16,fa0 vs8r.v v8,0(a0) ret gcc/ChangeLog: * config/riscv/riscv-v.cc (expand_vector_init_trailing_same_elem): New fun impl to expand the insn when trailing same elements. (expand_vec_init): Try trailing same elements when vec_init. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/vls-vlmax/init-same-tail-1.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/init-same-tail-2.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/init-same-tail-3.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/init-same-tail-4.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/init-same-tail-5.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/init-same-tail-run-1.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/init-same-tail-run-2.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/init-same-tail-run-3.c: New test. * gcc.target/riscv/rvv/autovec/vls/init-same-tail-1.c: New test. * gcc.target/riscv/rvv/autovec/vls/init-same-tail-2.c: New test. * gcc.target/riscv/rvv/autovec/vls/init-same-tail-3.c: New test. * gcc.target/riscv/rvv/autovec/vls/init-same-tail-4.c: New test. * gcc.target/riscv/rvv/autovec/vls/init-same-tail-5.c: New test. * gcc.target/riscv/rvv/autovec/vls/init-same-tail-6.c: New test. * gcc.target/riscv/rvv/autovec/vls/init-same-tail-7.c: New test. * gcc.target/riscv/rvv/autovec/vls/init-same-tail-8.c: New test. * gcc.target/riscv/rvv/autovec/vls/init-same-tail-9.c: New test. Signed-off-by: Pan Li <pan2.li@intel.com>
Diffstat (limited to 'gcc/expr.cc')
0 files changed, 0 insertions, 0 deletions