https://gcc.gnu.org/g:3cde331e9590944819621bcde41ddbffd9bbf0ba

commit r15-3242-g3cde331e9590944819621bcde41ddbffd9bbf0ba
Author: Kito Cheng <kito.ch...@sifive.com>
Date:   Tue Aug 27 21:27:02 2024 +0800

    RISC-V: Add missing mode_idx for vrol and vror
    
    We add pattern for vector rotate, but seems like we forgot adding
    mode_idx which used in AVL propgation (riscv-avlprop.cc).
    
    gcc/ChangeLog:
    
            * config/riscv/vector.md (mode_idx): Add vrol and vror.
    
    gcc/testsuite/ChangeLog:
    
            * gcc.target/riscv/rvv/autovec/rotr.c: New.

Diff:
---
 gcc/config/riscv/vector.md                        |  2 +-
 gcc/testsuite/gcc.target/riscv/rvv/autovec/rotr.c | 13 +++++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/gcc/config/riscv/vector.md b/gcc/config/riscv/vector.md
index 666719330c69..d0677325ba1d 100644
--- a/gcc/config/riscv/vector.md
+++ b/gcc/config/riscv/vector.md
@@ -816,7 +816,7 @@
                                vfcmp,vfminmax,vfsgnj,vfclass,vfmerge,vfmov,\
                                
vfcvtitof,vfncvtitof,vfncvtftoi,vfncvtftof,vmalu,vmiota,vmidx,\
                                
vimovxv,vfmovfv,vslideup,vslidedown,vislide1up,vislide1down,vfslide1up,vfslide1down,\
-                               
vgather,vcompress,vmov,vnclip,vnshift,vandn,vcpop,vclz,vctz")
+                               
vgather,vcompress,vmov,vnclip,vnshift,vandn,vcpop,vclz,vctz,vrol,vror")
               (const_int 0)
 
               (eq_attr "type" "vimovvx,vfmovvf")
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/rotr.c 
b/gcc/testsuite/gcc.target/riscv/rvv/autovec/rotr.c
new file mode 100644
index 000000000000..055b28d1e787
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/rotr.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gcv_zvbb -mabi=lp64d -fno-vect-cost-model 
-mrvv-vector-bits=zvl" } */
+
+typedef int a;
+void *b;
+a c;
+void d() {
+  a e = c, f =0;
+  short *g = b;
+  for (; f < e; f++)
+    *(g + f) = (255 & (*(g + f) >> 8)) | *(g + f) << 8;
+}
+

Reply via email to