[PATCH 3/3] RISC-V: Add sanity testcases for RVV auto-vectorization

2023-04-19 Thread juzhe . zhong
From: Ju-Zhe Zhong This patch adds sanity tests for basic enabling auto-vectorization. We should make sure compiler enable auto-vectorization strictly according to '-march' For example, '-march=rv32gc_zve32x' can not allow INT64 auto-vectorization. Since SEW = 64 RVV instructions are illegal ins

[PATCH 0/3 V2] RISC-V: Basic enable RVV auto-vectorizaiton

2023-04-19 Thread juzhe . zhong
From: Ju-Zhe Zhong PATCH 1: Add compile option for RVV auto-vectorization. PATCH 2: Enable basic RVV auto-vectorization. PATCH 3: Add sanity testcases. *** BLURB HERE *** Ju-Zhe Zhong (3): RISC-V: Add auto-vectorization compile option for RVV RISC-V: Enable basic auto-vectorization for RVV

[PATCH 2/3 V2] RISC-V: Enable basic auto-vectorization for RVV

2023-04-19 Thread juzhe . zhong
c.md b/gcc/config/riscv/autovec.md new file mode 100644 index 000..b5d46ff57ab --- /dev/null +++ b/gcc/config/riscv/autovec.md @@ -0,0 +1,49 @@ +;; Machine description for auto-vectorization using RVV for GNU compiler. +;; Copyright (C) 2023 Free Software Foundation, Inc. +;; Contributed by J

[PATCH 1/3 V2] RISC-V: Add auto-vectorization compile option for RVV

2023-04-19 Thread juzhe . zhong
From: Ju-Zhe Zhong This patch is adding 2 compile option for RVV auto-vectorization. 1. -param=riscv-autovec-preference= This option is to specify the auto-vectorization approach for RVV. Currently, we only support scalable and fixed-vlmax. - scalable means VLA auto-vectorization.

[PATCH 3/3 V2] RISC-V: Add sanity testcases for RVV auto-vectorization

2023-04-19 Thread juzhe . zhong
From: Ju-Zhe Zhong This patch adds sanity tests for basic enabling auto-vectorization. We should make sure compiler enable auto-vectorization strictly according to '-march' For example, '-march=rv32gc_zve32x' can not allow INT64 auto-vectorization. Since SEW = 64 RVV instructions are illegal ins

[PATCH] RISC-V: Support segment intrinsics

2023-04-21 Thread juzhe . zhong
From: Juzhe-Zhong gcc/ChangeLog: * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load): New function. (class vlseg): New class. (class vsseg): Ditto. (class vlsseg): Ditto. (class vssseg): Ditto. (class seg_indexed_load): Ditto

[PATCH] RISC-V: Fix PR108279

2023-04-21 Thread juzhe . zhong
From: Juzhe-Zhong PR 108270 Fix issue: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108270. Consider the following testcase: void f (void * restrict in, void * restrict out, int l, int n, int m) { for (int i = 0; i < l; i++){ for (int j = 0; j < m; j++){ for (int k

[PATCH V2] RISC-V: Fix PR108279

2023-04-21 Thread juzhe . zhong
From: Juzhe-Zhong PR 108270 Fix issue: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108270. Consider the following testcase: void f (void * restrict in, void * restrict out, int l, int n, int m) { for (int i = 0; i < l; i++){ for (int j = 0; j < m; j++){ for (int k

[PATCH V3] RISC-V: Defer vsetvli insertion to later if possible [PR108270]

2023-04-21 Thread juzhe . zhong
From: Juzhe-Zhong Fix issue: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108270. Consider the following testcase: void f (void * restrict in, void * restrict out, int l, int n, int m) { for (int i = 0; i < l; i++){ for (int j = 0; j < m; j++){ for (int k = 0; k

[PATCH V4] RISC-V: Defer vsetvli insertion to later if possible [PR108270]

2023-04-21 Thread juzhe . zhong
From: Juzhe-Zhong Fix issue: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108270. Consider the following testcase: void f (void * restrict in, void * restrict out, int l, int n, int m) { for (int i = 0; i < l; i++){ for (int j = 0; j < m; j++){ for (int k = 0; k

[PATCH V2] RISC-V: Optimize fault only first load

2023-04-23 Thread juzhe . zhong
From: Juzhe-Zhong V2 patch for: https://patchwork.sourceware.org/project/gcc/patch/20230330012804.110539-1-juzhe.zh...@rivai.ai/ which has been reviewed. This patch address Jeff's comment, refine ChangeLog to give more clear information. gcc/ChangeLog: * config/riscv/v

[PATCH] RISC-V: Add function comment for cleanup_insns.

2023-04-23 Thread juzhe . zhong
From: Juzhe-Zhong Address Jeff's comment: https://patchwork.sourceware.org/project/gcc/patch/20230330012804.110539-1-juzhe.zh...@rivai.ai/ Add a function comment. gcc/ChangeLog: * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function comment for cleanup_

[PATCH] RISC-V: Eliminate redundant vsetvli for duplicate AVL def

2023-04-23 Thread juzhe . zhong
From: Juzhe-Zhong This patch is the V2 patch:https://patchwork.sourceware.org/project/gcc/patch/20230328010124.235703-1-juzhe.zh...@rivai.ai/ Address comments from Jeff. Add comments for all_avail_in_compatible_p and refine comments of codes. gcc/ChangeLog: * config/riscv/riscv

[PATCH V2] RISC-V: Eliminate redundant vsetvli for duplicate AVL def

2023-04-23 Thread juzhe . zhong
From: Juzhe-Zhong This patch is the V2 patch:https://patchwork.sourceware.org/project/gcc/patch/20230328010124.235703-1-juzhe.zh...@rivai.ai/ Address comments from Jeff. Add comments for all_avail_in_compatible_p and refine comments of codes. gcc/ChangeLog: * config/riscv/riscv

[PATCH] VECT: Add decrement IV iteration loop control by variable amount support

2023-04-25 Thread juzhe . zhong
From: Juzhe-Zhong Hi, this is the most important patch for RVV auto-vectorization support. It supports WHILE_LEN pattern to not only decrement Loop control IV counter, but also adjust data reference address pointer by WHILE_LEN. 1. Single control loop (vec_num == 1 && ncopies == 1): in

[PATCH] Add myself to write after approval

2023-04-25 Thread juzhe . zhong
Jon Ziegler Roman Zippel Josef Zlomek +Juzhe Zhong Bug database only accounts -- 2.36.3

[PATCH V3] VECT: Add decrement IV iteration loop control by variable amount support

2023-04-25 Thread juzhe . zhong
From: Juzhe-Zhong This patch address all comments from Richard && Bernhard. Fix all codes following their comments: 1. Remove ifn-specific handling of WHILE_LEN, so there is no change in internal-fn.cc in this patch. 2. Add comments for changing interface of "create_iv&

[PATCH V2] RISC-V: Fine tune vmadc/vmsbc RA constraint

2023-04-25 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/ChangeLog: * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/narrow_constraint-13.c: New test. * gcc.target/riscv/rvv/base/narrow_constraint-14.c: New test. * gcc.target/riscv/

[PATCH V3] RISC-V: Enable basic RVV auto-vectorization support.

2023-05-03 Thread juzhe . zhong
From: Juzhe-Zhong This patch is fix patch of V2: https://patchwork.sourceware.org/project/gcc/patch/20230419164214.1032017-3-juzhe.zh...@rivai.ai/. Address comments from Kito && Robin, and fix issues && add testcases for them. gcc/ChangeLog: * config/risc

[PATCH V4] VECT: Add decrement IV iteration loop control by variable amount support

2023-05-04 Thread juzhe . zhong
From: Ju-Zhe Zhong This patch is fixing V3 patch: https://patchwork.sourceware.org/project/gcc/patch/20230407014741.139387-1-juzhe.zh...@rivai.ai/ Fix issues according to Richard Sandiford && Richard Biener. 1. Rename WHILE_LEN pattern into SELECT_VL according to Richard Sandiford. 2. Support m

[PATCH] RISC-V: Fix PR109615

2023-05-04 Thread juzhe . zhong
From: Juzhe-Zhong Before this patch: ... .L2: addia4,a1,100 add t1,a0,a2 mv t0,a0 beq a2,zero,.L1 vsetvli zero,a3,e8,mf8,tu,mu .L4: addia6,t0,100 addia7,a4,-100 vle8.v v1,0(t0) addit0,t0,1

[PATCH V2] RISC-V: Fix PR109615

2023-05-04 Thread juzhe . zhong
From: Juzhe-Zhong This patch is to fix following case: void f (int8_t * restrict in, int8_t * restrict out, int n, int m, int cond) { size_t vl = 101; if (cond) vl = m * 2; else vl = m * 2 * vl; for (size_t i = 0; i < n; i++) { vint8mf8_t v = __riscv_vle8_v_i8mf8

[PATCH] RISC-V: Fix PR109748

2023-05-05 Thread juzhe . zhong
From: Juzhe-Zhong This patch is fixing my recent optimization patch: https://github.com/gcc-mirror/gcc/commit/d51f2456ee51bd59a79b4725ca0e488c25260bbf In that patch, the new_info = parse_insn (i) is not correct. Since consider the following case: vsetvli a5,a4, e8,m1 .. vsetvli zero,a5

[PATCH V4] RISC-V: Enable basic RVV auto-vectorization support.

2023-05-05 Thread juzhe . zhong
From: Juzhe-Zhong This patch is depending on https://patchwork.sourceware.org/project/gcc/patch/20230504054544.203366-1-juzhe.zh...@rivai.ai/ Fix codes according to comments of Kito. gcc/ChangeLog: * config/riscv/riscv.cc (riscv_get_arg_info): Move RVV type argument handling outside

[PATCH V2] RISC-V: Fix incorrect demand info merge in local vsetvli optimization [PR109748]

2023-05-05 Thread juzhe . zhong
From: Juzhe-Zhong This patch is fixing my recent optimization patch: https://github.com/gcc-mirror/gcc/commit/d51f2456ee51bd59a79b4725ca0e488c25260bbf In that patch, the new_info = parse_insn (i) is not correct. Since consider the following case: vsetvli a5,a4, e8,m1 .. vsetvli zero,a5

[PATCH V5] RISC-V: Enable basic RVV auto-vectorization support.

2023-05-05 Thread juzhe . zhong
From: Juzhe-Zhong Address comments from Robin. gcc/ChangeLog: * config/riscv/riscv-v.cc (preferred_simd_mode): Fix comments. * config/riscv/riscv.cc (riscv_get_arg_info): Ditto. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/fixed-vlmax-1.c: Fix function name

[PATCH] ISC-V: Enable basic RVV auto-vectorization support.

2023-05-05 Thread juzhe . zhong
From: Juzhe-Zhong gcc/ChangeLog: * config/riscv/riscv-protos.h (preferred_simd_mode): New function. * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto. (preferred_simd_mode): Ditto. * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function

[PATCH V6] RISC-V: Enable basic RVV auto-vectorization support.

2023-05-05 Thread juzhe . zhong
From: Juzhe-Zhong gcc/ChangeLog: * config/riscv/riscv-protos.h (preferred_simd_mode): New function. * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto. (preferred_simd_mode): Ditto. * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function

[PATCH V7] RISC-V: Enable basic RVV auto-vectorization support.

2023-05-05 Thread juzhe . zhong
From: Juzhe-Zhong gcc/ChangeLog: * config/riscv/riscv-protos.h (preferred_simd_mode): New function. * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto. (preferred_simd_mode): Ditto. * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function

[PATCH] RISC-V: Optimize vsetvli of LCM INSERTED edge for user vsetvli [PR 109743]

2023-05-06 Thread juzhe . zhong
From: Juzhe-Zhong This patch is fixing: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109743. This issue happens is because we are currently very conservative in optimization of user vsetvli. Consider this following case: bb 1: vsetvli a5,a4... (demand AVL = a4). bb 2: RVV insn use a5

[PATCH] RISC-V: Fix ugly && incorrect codes of RVV auto-vectorization

2023-05-07 Thread juzhe . zhong
From: Juzhe-Zhong 1. Add movmisalign pattern for TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT targethook, current RISC-V has supported this target hook, we can't make it supported without movmisalign pattern. 2. Remove global extern of get_mask_policy_no_pred && get_tail_p

[PATCH V2] RISC-V: Optimize vsetvli of LCM INSERTED edge for user vsetvli [PR 109743]

2023-05-08 Thread juzhe . zhong
From: Juzhe-Zhong This patch is fixing: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109743. This issue happens is because we are currently very conservative in optimization of user vsetvli. Consider this following case: bb 1: vsetvli a5,a4... (demand AVL = a4). bb 2: RVV insn use a5

[PATCH V3] RISC-V: Optimize vsetvli of LCM INSERTED edge for user vsetvli [PR 109743]

2023-05-08 Thread juzhe . zhong
From: Juzhe-Zhong Rebase to trunk and send V3 patch for: https://gcc.gnu.org/pipermail/gcc-patches/2023-May/617821.html This patch is fixing: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109743. This issue happens is because we are currently very conservative in optimization of user vsetvli

[PATCH] RISC-V: Fix dead loop for user vsetvli intrinsic avl checking [PR109773]

2023-05-08 Thread juzhe . zhong
From: Juzhe-Zhong This patch is fix dead loop in vsetvl intrinsic avl checking. vsetvli->get_def () has vsetvli->get_def () has vsetvli. Then it will keep looping in the vsetvli avl checking which is a dead loop. PR target/109773 gcc/ChangeLog: * config/riscv

[PATCH] RISC-V: Fix incorrect implementation of TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT

2023-05-09 Thread juzhe . zhong
From: Juzhe-Zhong This incorrect codes blocks the scalable RVV auto-vectorization. Take a look at this target hook implementation of aarch64. They only have the similiar handling on TARGET_SIMD. They let movmisalign to handle scalable vector of SVE. For RVV, we should follow the same

[PATCH V2] RISC-V: Fix incorrect implementation of TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT

2023-05-09 Thread juzhe . zhong
From: Juzhe-Zhong This incorrect codes blocks the scalable RVV auto-vectorization. Take a look at this target hook implementation of aarch64. They only have the similiar handling on TARGET_SIMD. They let movmisalign to handle scalable vector of SVE. For RVV, we should follow the same

[PATCH] RISC-V: Fix testcases check.

2023-01-27 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/vsetvl/avl_multiple-7.c: Fix testcase check. * gcc.target/riscv/rvv/vsetvl/avl_multiple-8.c: Ditto. * gcc.target/riscv/rvv/vsetvl/vsetvl-18.c: Ditto. --- gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_mul

[PATCH] RISC-V: Remove redundant attributes

2023-01-27 Thread juzhe . zhong
From: Ju-Zhe Zhong --- gcc/config/riscv/vector.md | 20 1 file changed, 20 deletions(-) diff --git a/gcc/config/riscv/vector.md b/gcc/config/riscv/vector.md index 8c60eb20d72..4319266974d 100644 --- a/gcc/config/riscv/vector.md +++ b/gcc/config/riscv/vector.md @@ -208,26 +2

[PATCH] RISC-V: Add vlse/vsse intrinsics support

2023-01-27 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/ChangeLog: * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate. * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): Support vlse/vsse. (BASE): Ditto. * config/riscv/riscv-vector-builtins-bases.h: Ditto.

[PATCH] RISC-V: Add indexed loads/stores C/C++ intrinsic support

2023-01-29 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/ChangeLog: * config/riscv/riscv-protos.h (get_vector_mode): New function. * config/riscv/riscv-v.cc (get_vector_mode): Ditto. * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum. (class loadstore): Adjust for indexed load

[PATCH] RISC-V: Add VSETVL testcases for indexed loads/stores.

2023-01-29 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/vsetvl/avl_single-72.c: New test. * gcc.target/riscv/rvv/vsetvl/avl_single-76.c: New test. * gcc.target/riscv/rvv/vsetvl/avl_single-77.c: New test. --- .../riscv/rvv/vsetvl/avl_single-72.c | 27

[PATCH] RISC-V: Add indexed loads/stores constraints testcases

2023-01-29 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vlxei-vsxei-constraint-1.c: New test. --- .../riscv/rvv/base/vlxei-vsxei-constraint-1.c | 121 ++ 1 file changed, 121 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/vlxei

[PATCH] RISC-V: Add vsoxei8 && vsoxei16 C++ API intrinsic testcase

2023-01-29 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vsoxei16-1.C: New test. * g++.target/riscv/rvv/base/vsoxei16-2.C: New test. * g++.target/riscv/rvv/base/vsoxei16-3.C: New test. * g++.target/riscv/rvv/base/vsoxei8-1.C: New test. * g++

[PATCH] RISC-V: Add vsoxei32 && vsoxei64 C++ API intrinsic testcase

2023-01-29 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vsoxei32-1.C: New test. * g++.target/riscv/rvv/base/vsoxei32-2.C: New test. * g++.target/riscv/rvv/base/vsoxei32-3.C: New test. * g++.target/riscv/rvv/base/vsoxei64-1.C: New test. * g+

[PATCH] RISC-V: Add integer binary vv C/C++ API support

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong --- gcc/config/riscv/constraints.md | 10 + gcc/config/riscv/iterators.md | 14 +- gcc/config/riscv/predicates.md| 15 ++ .../riscv/riscv-vector-builtins-bases.cc | 48 + .../riscv/riscv-vector-builtins-bases.h |

[PATCH] RISC-V: Add srl.vv C API tests

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vsrl_vv-1.c: New test. * gcc.target/riscv/rvv/base/vsrl_vv-2.c: New test. * gcc.target/riscv/rvv/base/vsrl_vv-3.c: New test. * gcc.target/riscv/rvv/base/vsrl_vv_m-1.c: New test. * gcc.

[PATCH] RISC-V: Add vsra.vv C API tests

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vsra_vv-1.c: New test. * gcc.target/riscv/rvv/base/vsra_vv-2.c: New test. * gcc.target/riscv/rvv/base/vsra_vv-3.c: New test. * gcc.target/riscv/rvv/base/vsra_vv_m-1.c: New test. * gcc.

[PATCH] RISC-V: Add binop constraint tests

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/binop_vv_constraint-1.c: New test. --- .../riscv/rvv/base/binop_vv_constraint-1.c| 132 ++ 1 file changed, 132 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/binop_vv

[PATCH] RISC-V: Add vsrl.vv C++ API tests

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vsrl_vv-1.C: New test. * g++.target/riscv/rvv/base/vsrl_vv-2.C: New test. * g++.target/riscv/rvv/base/vsrl_vv-3.C: New test. * g++.target/riscv/rvv/base/vsrl_vv_mu-1.C: New test. * g++

[PATCH] RISC-V: Add vsra.vv C++ API tests

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vsra_vv-1.C: New test. * g++.target/riscv/rvv/base/vsra_vv-2.C: New test. * g++.target/riscv/rvv/base/vsra_vv-3.C: New test. * g++.target/riscv/rvv/base/vsra_vv_mu-1.C: New test. * g++

[PATCH] RISC-V: Add RVV shift.vx C/C++ API support

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/ChangeLog: * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate. * config/riscv/riscv-vector-builtins-bases.cc: New class. * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto. (vsra): Ditto. (vsrl):

[PATCH] RISC-V: Add vsrl.vx C API tests

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vsrl_vx-1.c: New test. * gcc.target/riscv/rvv/base/vsrl_vx-2.c: New test. * gcc.target/riscv/rvv/base/vsrl_vx-3.c: New test. * gcc.target/riscv/rvv/base/vsrl_vx_m-1.c: New test. * gcc.

[PATCH] RISC-V: Add vsra.vx C API tests

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vsra_vx-1.c: New test. * gcc.target/riscv/rvv/base/vsra_vx-2.c: New test. * gcc.target/riscv/rvv/base/vsra_vx-3.c: New test. * gcc.target/riscv/rvv/base/vsra_vx_m-1.c: New test. * gcc.

[PATCH] RISC-V: Add shift constraint tests

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/shift_vx_constraint-1.c: New test. --- .../riscv/rvv/base/shift_vx_constraint-1.c| 133 ++ 1 file changed, 133 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/shift_vx

[PATCH] RISC-V: Add vsrl.vx C++ API tests

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vsrl_vx-1.C: New test. * g++.target/riscv/rvv/base/vsrl_vx-2.C: New test. * g++.target/riscv/rvv/base/vsrl_vx-3.C: New test. * g++.target/riscv/rvv/base/vsrl_vx_mu-1.C: New test. * g++

[PATCH] RISC-V: Add vsra.vx C++ API tests

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vsra_vx-1.C: New test. * g++.target/riscv/rvv/base/vsra_vx-2.C: New test. * g++.target/riscv/rvv/base/vsra_vx-3.C: New test. * g++.target/riscv/rvv/base/vsra_vx_mu-1.C: New test. * g++

[PATCH] RISC-V: Fix constraint bug for binary operation

2023-01-31 Thread juzhe . zhong
From: Ju-Zhe Zhong Current constraint configuration will generate: vadd.vv v0,v24,v25,v0.t vsll.vx v0,v24,a5,v0.t They are incorrect according to RVV ISA. This patch fix this obvious issue. gcc/ChangeLog: * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug. (sll.vv)

[PATCH] CPROP: Allow cprop optimization when the function has a single block

2023-02-01 Thread juzhe . zhong
From: Ju-Zhe Zhong Hi, this patch is present for GCC 14 since I understand it's not appropriate to land it in GCC 13. NUM_FIXED_BLOCKS = 2 since GCC define each function has aleast 2 blocks one is entry block, the other is exit block. So according this code, the function will not do cprop optimi

[PATCH] RISC-V: Add binary vx C/C++ support

2023-02-02 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/ChangeLog: * config/riscv/constraints.md (Wdm): Adjust constraint. (Wbr): New constraint. * config/riscv/predicates.md (reg_or_int_operand): New predicate. * config/riscv/riscv-protos.h (emit_pred_op): Remove function. (emit_vlmax_op

[PATCH] RISC-V: Add unary C/C++ API support

2023-02-03 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/ChangeLog: * config/riscv/iterators.md: Add neg and not. * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class. (BASE): Ditto. * config/riscv/riscv-vector-builtins-bases.h: Ditto. * config/riscv/riscv-vector-builtins-

[PATCH] RISC-V: Add vnot.v C API tests

2023-02-03 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vnot_v-1.c: New test. * gcc.target/riscv/rvv/base/vnot_v-2.c: New test. * gcc.target/riscv/rvv/base/vnot_v-3.c: New test. * gcc.target/riscv/rvv/base/vnot_v_m-1.c: New test. * gcc.targ

[PATCH] RISC-V: Add vneg.v C/C++ API tests

2023-02-03 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vneg_v-1.c: New test. * gcc.target/riscv/rvv/base/vneg_v-2.c: New test. * gcc.target/riscv/rvv/base/vneg_v-3.c: New test. * gcc.target/riscv/rvv/base/vneg_v_m-1.c: New test. * gcc.targ

[PATCH] RISC-V: Add unary constraint tests.

2023-02-03 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/unop_v_constraint-1.c: New test. --- .../riscv/rvv/base/unop_v_constraint-1.c | 132 ++ 1 file changed, 132 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/unop_v_con

[PATCH] RISC-V: Add vnot.v C++ API tests

2023-02-03 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vnot_v-1.C: New test. * g++.target/riscv/rvv/base/vnot_v-2.C: New test. * g++.target/riscv/rvv/base/vnot_v-3.C: New test. * g++.target/riscv/rvv/base/vnot_v_mu-1.C: New test. * g++.tar

[PATCH] RISC-V: Add vneg.v C++ API tests

2023-02-03 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vneg_v-1.C: New test. * g++.target/riscv/rvv/base/vneg_v-2.C: New test. * g++.target/riscv/rvv/base/vneg_v-3.C: New test. * g++.target/riscv/rvv/base/vneg_v_mu-1.C: New test. * g++.tar

[PATCH] RISC-V: Fix VSETVL PASS bug in exception handling

2023-02-03 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/ChangeLog: * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block. gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/exception-1.C: New test. --- gcc/config/riscv/riscv-vsetvl.cc | 10 +-- .../g++.targe

[PATCH] RISC-V: Add saturating Addition && Subtraction C/C++ Support

2023-02-04 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/ChangeLog: * config/riscv/iterators.md: Add saturating Addition && Subtraction. * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto. * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto. * config/riscv/riscv-vector-builtins-bases.h:

[PATCH] RISC-V: Add saturating Add && Sub vx constraint tests

2023-02-04 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/binop_vx_constraint-100.c: New test. * gcc.target/riscv/rvv/base/binop_vx_constraint-101.c: New test. * gcc.target/riscv/rvv/base/binop_vx_constraint-102.c: New test. * gcc.target/riscv/rvv/ba

[PATCH] RISC-V: Add vsadd.vv C++ API tests

2023-02-04 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vsadd_vv-1.C: New test. * g++.target/riscv/rvv/base/vsadd_vv-2.C: New test. * g++.target/riscv/rvv/base/vsadd_vv-3.C: New test. * g++.target/riscv/rvv/base/vsadd_vv_mu-1.C: New test. *

[PATCH] RISC-V: Add vsaddu.vv C++ API tests.

2023-02-04 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vsaddu_vv-1.C: New test. * g++.target/riscv/rvv/base/vsaddu_vv-2.C: New test. * g++.target/riscv/rvv/base/vsaddu_vv-3.C: New test. * g++.target/riscv/rvv/base/vsaddu_vv_mu-1.C: New test.

[PATCH] RISC-V: Add vsub.vv C++ API tests

2023-02-04 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vssub_vv-1.C: New test. * g++.target/riscv/rvv/base/vssub_vv-2.C: New test. * g++.target/riscv/rvv/base/vssub_vv-3.C: New test. * g++.target/riscv/rvv/base/vssub_vv_mu-1.C: New test. *

[PATCH] RISC-V: Add vssubu.vv C++ API tests

2023-02-04 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vssubu_vv-1.C: New test. * g++.target/riscv/rvv/base/vssubu_vv-2.C: New test. * g++.target/riscv/rvv/base/vssubu_vv-3.C: New test. * g++.target/riscv/rvv/base/vssubu_vv_mu-1.C: New test.

[PATCH] RISC-V: Add vssubu.vv C API tests

2023-02-04 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vssubu_vv-1.c: New test. * gcc.target/riscv/rvv/base/vssubu_vv-2.c: New test. * gcc.target/riscv/rvv/base/vssubu_vv-3.c: New test. * gcc.target/riscv/rvv/base/vssubu_vv_m-1.c: New test.

[PATCH] RISC-V: Add vssub.vv C API tests

2023-02-04 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vssub_vv-1.c: New test. * gcc.target/riscv/rvv/base/vssub_vv-2.c: New test. * gcc.target/riscv/rvv/base/vssub_vv-3.c: New test. * gcc.target/riscv/rvv/base/vssub_vv_m-1.c: New test. *

[PATCH] RISC-V: Add vsaddu.vv C API tests

2023-02-04 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vsaddu_vv-1.c: New test. * gcc.target/riscv/rvv/base/vsaddu_vv-2.c: New test. * gcc.target/riscv/rvv/base/vsaddu_vv-3.c: New test. * gcc.target/riscv/rvv/base/vsaddu_vv_m-1.c: New test.

[PATCH] RISC-V: Add vsadd.vv C API tests

2023-02-04 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vsadd_vv-1.c: New test. * gcc.target/riscv/rvv/base/vsadd_vv-2.c: New test. * gcc.target/riscv/rvv/base/vsadd_vv-3.c: New test. * gcc.target/riscv/rvv/base/vsadd_vv_m-1.c: New test. *

[PATCH] RISC-V: Add vsext/vzext C/C++ intrinsic support

2023-02-05 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/ChangeLog: * config/riscv/iterators.md: Add sign_extend/zero_extend. * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class. (BASE): Ditto. * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support. * config

[PATCH] RISC-V: Add vzext.vf8 C API tests

2023-02-05 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vzext_vf8-1.c: New test. * gcc.target/riscv/rvv/base/vzext_vf8-2.c: New test. * gcc.target/riscv/rvv/base/vzext_vf8-3.c: New test. * gcc.target/riscv/rvv/base/vzext_vf8_m-1.c: New test.

[PATCH] RISC-V: Add vzext.vf4 C API tests

2023-02-05 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vzext_vf4-1.c: New test. * gcc.target/riscv/rvv/base/vzext_vf4-2.c: New test. * gcc.target/riscv/rvv/base/vzext_vf4-3.c: New test. * gcc.target/riscv/rvv/base/vzext_vf4_m-1.c: New test.

[PATCH] RISC-V: Add vzext.vf2 C API tests

2023-02-05 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vzext_vf2-1.c: New test. * gcc.target/riscv/rvv/base/vzext_vf2-2.c: New test. * gcc.target/riscv/rvv/base/vzext_vf2-3.c: New test. * gcc.target/riscv/rvv/base/vzext_vf2_m-1.c: New test.

[PATCH] RISC-V: Add vsext.vf8 C API tests

2023-02-05 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vsext_vf8-1.c: New test. * gcc.target/riscv/rvv/base/vsext_vf8-2.c: New test. * gcc.target/riscv/rvv/base/vsext_vf8-3.c: New test. * gcc.target/riscv/rvv/base/vsext_vf8_m-1.c: New test.

[PATCH] RISC-V: Add vsext.vf4 C API tests

2023-02-05 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vsext_vf4-1.c: New test. * gcc.target/riscv/rvv/base/vsext_vf4-2.c: New test. * gcc.target/riscv/rvv/base/vsext_vf4-3.c: New test. * gcc.target/riscv/rvv/base/vsext_vf4_m-1.c: New test.

[PATCH] RISC-V: Add vsext.vf2 C API tests

2023-02-05 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vsext_vf2-1.c: New test. * gcc.target/riscv/rvv/base/vsext_vf2-2.c: New test. * gcc.target/riscv/rvv/base/vsext_vf2-3.c: New test. * gcc.target/riscv/rvv/base/vsext_vf2_m-1.c: New test.

[PATCH] RISC-V: Add vsext constraint tests

2023-02-05 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/unop_v_constraint-2.c: New test. --- .../riscv/rvv/base/unop_v_constraint-2.c | 132 ++ 1 file changed, 132 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/unop_v_con

[PATCH] RISC-V: Add vzext.vf8 C++ API tests

2023-02-05 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vzext_vf8-1.C: New test. * g++.target/riscv/rvv/base/vzext_vf8-2.C: New test. * g++.target/riscv/rvv/base/vzext_vf8-3.C: New test. * g++.target/riscv/rvv/base/vzext_vf8_mu-1.C: New test.

[PATCH] RISC-V: Add vzext.vf4 C++ API tests

2023-02-05 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vzext_vf4-1.C: New test. * g++.target/riscv/rvv/base/vzext_vf4-2.C: New test. * g++.target/riscv/rvv/base/vzext_vf4-3.C: New test. * g++.target/riscv/rvv/base/vzext_vf4_mu-1.C: New test.

[PATCH] RISC-V: Add vzext.vf2 C++ API tests

2023-02-05 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vzext_vf2-1.C: New test. * g++.target/riscv/rvv/base/vzext_vf2-2.C: New test. * g++.target/riscv/rvv/base/vzext_vf2-3.C: New test. * g++.target/riscv/rvv/base/vzext_vf2_mu-1.C: New test.

[PATCH] RISC-V: Add vmulh C/C++ support

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong Co-authored-by: kito-cheng gcc/ChangeLog: * common/config/riscv/riscv-common.cc: Add flag for 'V' extension. * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class. (BASE): Ditto. * config/riscv/riscv-vector-builtins-bases.h: D

[PATCH] RISC-V: Add vmulhu.vv C API tests

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vmulhu_vv-1.c: New test. * gcc.target/riscv/rvv/base/vmulhu_vv-2.c: New test. * gcc.target/riscv/rvv/base/vmulhu_vv-3.c: New test. * gcc.target/riscv/rvv/base/vmulhu_vv_m-1.c: New test.

[PATCH] RISC-V: Add vmulhsu.vv C API tests

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vmulhsu_vv-1.c: New test. * gcc.target/riscv/rvv/base/vmulhsu_vv-2.c: New test. * gcc.target/riscv/rvv/base/vmulhsu_vv-3.c: New test. * gcc.target/riscv/rvv/base/vmulhsu_vv_m-1.c: New test.

[PATCH] RISC-V: Add vmulh.vv C API tests

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vmulh_vv-1.c: New test. * gcc.target/riscv/rvv/base/vmulh_vv-2.c: New test. * gcc.target/riscv/rvv/base/vmulh_vv-3.c: New test. * gcc.target/riscv/rvv/base/vmulh_vv_m-1.c: New test. *

[PATCH] RISC-V: Add vmulhsu.vv C++ API tests

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vmulhsu_vv-1.C: New test. * g++.target/riscv/rvv/base/vmulhsu_vv-2.C: New test. * g++.target/riscv/rvv/base/vmulhsu_vv-3.C: New test. * g++.target/riscv/rvv/base/vmulhsu_vv_mu-1.C: New test.

[PATCH] RISC-V: Add vmulh.vv C++ API tests

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * g++.target/riscv/rvv/base/vmulh_vv-1.C: New test. * g++.target/riscv/rvv/base/vmulh_vv-2.C: New test. * g++.target/riscv/rvv/base/vmulh_vv-3.C: New test. * g++.target/riscv/rvv/base/vmulh_vv_mu-1.C: New test. *

[PATCH] RISC-V: Add integer widening instructions

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/ChangeLog: * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class. (class vwmulsu): Ditto. (class vwcvt): Ditto. (BASE): Add integer widening support. * config/riscv/riscv-vector-builtins-bases.h: Ditto

[PATCH] RISC-V: Add vwsubu.wx C API tests

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vwsubu_wx-1.c: New test. * gcc.target/riscv/rvv/base/vwsubu_wx-2.c: New test. * gcc.target/riscv/rvv/base/vwsubu_wx-3.c: New test. * gcc.target/riscv/rvv/base/vwsubu_wx_m-1.c: New test.

[PATCH] RISC-V: Add vwsubu.wx C API tests

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vwsubu_wv-1.c: New test. * gcc.target/riscv/rvv/base/vwsubu_wv-2.c: New test. * gcc.target/riscv/rvv/base/vwsubu_wv-3.c: New test. * gcc.target/riscv/rvv/base/vwsubu_wv_m-1.c: New test.

[PATCH] RISC-V: Add vwsubu.vx C API tests

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vwsubu_vx-1.c: New test. * gcc.target/riscv/rvv/base/vwsubu_vx-2.c: New test. * gcc.target/riscv/rvv/base/vwsubu_vx-3.c: New test. * gcc.target/riscv/rvv/base/vwsubu_vx_m-1.c: New test.

[PATCH] RISC-V: Add vwsubu.vv C API tests

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vwsubu_vv-1.c: New test. * gcc.target/riscv/rvv/base/vwsubu_vv-2.c: New test. * gcc.target/riscv/rvv/base/vwsubu_vv-3.c: New test. * gcc.target/riscv/rvv/base/vwsubu_vv_m-1.c: New test.

[PATCH] RISC-V: Add vwsub.wx C API tests

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vwsub_wx-1.c: New test. * gcc.target/riscv/rvv/base/vwsub_wx-2.c: New test. * gcc.target/riscv/rvv/base/vwsub_wx-3.c: New test. * gcc.target/riscv/rvv/base/vwsub_wx_m-1.c: New test. *

[PATCH] RISC-V: Add vwsub.wv C API tests

2023-02-06 Thread juzhe . zhong
From: Ju-Zhe Zhong gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/vwsub_wv-1.c: New test. * gcc.target/riscv/rvv/base/vwsub_wv-2.c: New test. * gcc.target/riscv/rvv/base/vwsub_wv-3.c: New test. * gcc.target/riscv/rvv/base/vwsub_wv_m-1.c: New test. *

<    5   6   7   8   9   10   11   12   >