public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH 1/2] RISC-V/testsuite: Add RTL pr105314.c testcase variants
       [not found] <alpine.DEB.2.20.2401241102150.14163@tpp.orcam.me.uk>
@ 2024-01-24 11:16 ` Maciej W. Rozycki
  2024-01-24 17:09   ` Jeff Law
  2024-01-24 11:16 ` [PATCH 2/2] RISC-V/testsuite: Add RTL cset-sext.c " Maciej W. Rozycki
  1 sibling, 1 reply; 4+ messages in thread
From: Maciej W. Rozycki @ 2024-01-24 11:16 UTC (permalink / raw)
  To: gcc-patches; +Cc: Andrew Waterman, Jim Wilson, Kito Cheng, Palmer Dabbelt

Add a pair of RTL tests, for RV64 and RV32 respectively, corresponding 
to the existing pr105314.c test.  They have been produced from RTL code 
as at the entry of the "ce1" pass for pr105314.c compiled at -O3.

	gcc/testsuite/
	* gcc.target/riscv/pr105314-rtl.c: New file.
	* gcc.target/riscv/pr105314-rtl32.c: New file.
---
 gcc/testsuite/gcc.target/riscv/pr105314-rtl.c   |   78 ++++++++++++++++++++++++
 gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c |   78 ++++++++++++++++++++++++
 2 files changed, 156 insertions(+)

gcc-test-riscv-pr105314-rtl.diff
Index: gcc/gcc/testsuite/gcc.target/riscv/pr105314-rtl.c
===================================================================
--- /dev/null
+++ gcc/gcc/testsuite/gcc.target/riscv/pr105314-rtl.c
@@ -0,0 +1,78 @@
+/* PR rtl-optimization/105314 */
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" "-flto" } } */
+/* { dg-options "-fdump-rtl-ce1" } */
+
+long __RTL (startwith ("ce1"))
+foo (long a, long b, long c)
+{
+(function "foo"
+  (param "a"
+    (DECL_RTL (reg/v:DI <1> [ a ]))
+    (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+  (param "b"
+    (DECL_RTL (reg/v:DI <2> [ b ]))
+    (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+  (param "c"
+    (DECL_RTL (reg/v:DI <3> [ c ]))
+    (DECL_RTL_INCOMING (reg:DI a2 [ c ])))
+  (insn-chain
+    (block 2
+      (edge-from entry (flags "FALLTHRU"))
+      (cnote 8 [bb 2] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 2 (set (reg/v:DI <1> [ a ])
+                    (reg:DI a0 [ a ])) "pr105314.c":8:1
+               (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+      (cinsn 4 (set (reg/v:DI <3> [ c ])
+                    (reg:DI a2 [ c ])) "pr105314.c":8:1
+               (expr_list:REG_DEAD (reg:DI a2 [ c ])))
+      (cnote 5 NOTE_INSN_FUNCTION_BEG)
+      (cjump_insn 10 (set (pc)
+                          (if_then_else (ne (reg/v:DI <3> [ c ])
+                                            (const_int 0))
+                                        (label_ref:DI 23)
+                                        (pc))) "pr105314.c":9:6
+                     (expr_list:REG_DEAD (reg/v:DI <3> [ c ])
+                                         (int_list:REG_BR_PROB 536870916)))
+      (edge-to 4)
+      (edge-to 3 (flags "FALLTHRU"))
+    ) ;; block 2
+    (block 3
+      (edge-from 2 (flags "FALLTHRU"))
+      (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 6 (set (reg/v:DI <0> [ <retval> ])
+                    (reg/v:DI <1> [ a ])) "pr105314.c":9:6
+               (expr_list:REG_DEAD (reg/v:DI <1> [ a ])))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 3
+    (block 4
+      (edge-from 2)
+      (clabel 23 3)
+      (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 7 (set (reg/v:DI <0> [ <retval> ])
+                    (const_int 0)) "pr105314.c":10:7)
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 4
+    (block 5
+      (edge-from 4 (flags "FALLTHRU"))
+      (edge-from 3 (flags "FALLTHRU"))
+      (clabel 16 1)
+      (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 17 (set (reg/i:DI a0)
+                     (reg/v:DI <0> [ <retval> ])) "pr105314.c":12:1
+                (expr_list:REG_DEAD (reg/v:DI <0> [ <retval> ])))
+      (cinsn 18 (use (reg/i:DI a0)) "pr105314.c":12:1)
+      (edge-to exit (flags "FALLTHRU"))
+    ) ;; block 5
+  ) ;; insn-chain
+  (crtl
+    (return_rtx
+      (reg/i:DI a0)
+    ) ;; return_rtx
+  ) ;; crtl
+) ;; function "foo"
+}
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_store_flag_mask" 1 "ce1" } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
Index: gcc/gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c
===================================================================
--- /dev/null
+++ gcc/gcc/testsuite/gcc.target/riscv/pr105314-rtl32.c
@@ -0,0 +1,78 @@
+/* PR rtl-optimization/105314 */
+/* { dg-do compile } */
+/* { dg-require-effective-target rv32 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" "-flto" } } */
+/* { dg-options "-fdump-rtl-ce1" } */
+
+long __RTL (startwith ("ce1"))
+foo (long a, long b, long c)
+{
+(function "foo"
+  (param "a"
+    (DECL_RTL (reg/v:SI <1> [ a ]))
+    (DECL_RTL_INCOMING (reg:SI a0 [ a ])))
+  (param "b"
+    (DECL_RTL (reg/v:SI <2> [ b ]))
+    (DECL_RTL_INCOMING (reg:SI a1 [ b ])))
+  (param "c"
+    (DECL_RTL (reg/v:SI <3> [ c ]))
+    (DECL_RTL_INCOMING (reg:SI a2 [ c ])))
+  (insn-chain
+    (block 2
+      (edge-from entry (flags "FALLTHRU"))
+      (cnote 8 [bb 2] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 2 (set (reg/v:SI <1> [ a ])
+                    (reg:SI a0 [ a ])) "pr105314.c":8:1
+               (expr_list:REG_DEAD (reg:SI a0 [ a ])))
+      (cinsn 4 (set (reg/v:SI <3> [ c ])
+                    (reg:SI a2 [ c ])) "pr105314.c":8:1
+               (expr_list:REG_DEAD (reg:SI a2 [ c ])))
+      (cnote 5 NOTE_INSN_FUNCTION_BEG)
+      (cjump_insn 10 (set (pc)
+                          (if_then_else (ne (reg/v:SI <3> [ c ])
+                                            (const_int 0))
+                                        (label_ref:SI 23)
+                                        (pc))) "pr105314.c":9:6
+                     (expr_list:REG_DEAD (reg/v:SI <3> [ c ])
+                                         (int_list:REG_BR_PROB 536870916)))
+      (edge-to 4)
+      (edge-to 3 (flags "FALLTHRU"))
+    ) ;; block 2
+    (block 3
+      (edge-from 2 (flags "FALLTHRU"))
+      (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 6 (set (reg/v:SI <0> [ <retval> ])
+                    (reg/v:SI <1> [ a ])) "pr105314.c":9:6
+               (expr_list:REG_DEAD (reg/v:SI <1> [ a ])))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 3
+    (block 4
+      (edge-from 2)
+      (clabel 23 3)
+      (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 7 (set (reg/v:SI <0> [ <retval> ])
+                    (const_int 0)) "pr105314.c":10:7)
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 4
+    (block 5
+      (edge-from 4 (flags "FALLTHRU"))
+      (edge-from 3 (flags "FALLTHRU"))
+      (clabel 16 1)
+      (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 17 (set (reg/i:SI a0)
+                     (reg/v:SI <0> [ <retval> ])) "pr105314.c":12:1
+                (expr_list:REG_DEAD (reg/v:SI <0> [ <retval> ])))
+      (cinsn 18 (use (reg/i:SI a0)) "pr105314.c":12:1)
+      (edge-to exit (flags "FALLTHRU"))
+    ) ;; block 5
+  ) ;; insn-chain
+  (crtl
+    (return_rtx
+      (reg/i:SI a0)
+    ) ;; return_rtx
+  ) ;; crtl
+) ;; function "foo"
+}
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_store_flag_mask" 1 "ce1" } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 2/2] RISC-V/testsuite: Add RTL cset-sext.c testcase variants
       [not found] <alpine.DEB.2.20.2401241102150.14163@tpp.orcam.me.uk>
  2024-01-24 11:16 ` [PATCH 1/2] RISC-V/testsuite: Add RTL pr105314.c testcase variants Maciej W. Rozycki
@ 2024-01-24 11:16 ` Maciej W. Rozycki
  2024-01-24 17:10   ` Jeff Law
  1 sibling, 1 reply; 4+ messages in thread
From: Maciej W. Rozycki @ 2024-01-24 11:16 UTC (permalink / raw)
  To: gcc-patches; +Cc: Andrew Waterman, Jim Wilson, Kito Cheng, Palmer Dabbelt

Add RTL tests, for RV64 and RV32 where appropriate, corresponding to the 
existing cset-sext.c tests.  They have been produced from RTL code as at 
the entry of the "ce1" pass for the respective cset-sext.c tests built 
at -O3.

	gcc/testsuite/
	* gcc.target/riscv/cset-sext-rtl.c: New file.
	* gcc.target/riscv/cset-sext-rtl32.c: New file.
	* gcc.target/riscv/cset-sext-sfb-rtl.c: New file.
	* gcc.target/riscv/cset-sext-sfb-rtl32.c: New file.
	* gcc.target/riscv/cset-sext-thead-rtl.c: New file.
	* gcc.target/riscv/cset-sext-ventana-rtl.c: New file.
	* gcc.target/riscv/cset-sext-zicond-rtl.c: New file.
	* gcc.target/riscv/cset-sext-zicond-rtl32.c: New file.
---
 gcc/testsuite/gcc.target/riscv/cset-sext-rtl.c          |   87 +++++++++++++++
 gcc/testsuite/gcc.target/riscv/cset-sext-rtl32.c        |   84 +++++++++++++++
 gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl.c      |   88 ++++++++++++++++
 gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl32.c    |   85 +++++++++++++++
 gcc/testsuite/gcc.target/riscv/cset-sext-thead-rtl.c    |   86 +++++++++++++++
 gcc/testsuite/gcc.target/riscv/cset-sext-ventana-rtl.c  |   86 +++++++++++++++
 gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl.c   |   86 +++++++++++++++
 gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl32.c |   83 +++++++++++++++
 8 files changed, 685 insertions(+)

gcc-test-riscv-cset-sext-rtl.diff
Index: gcc/gcc/testsuite/gcc.target/riscv/cset-sext-rtl.c
===================================================================
--- /dev/null
+++ gcc/gcc/testsuite/gcc.target/riscv/cset-sext-rtl.c
@@ -0,0 +1,87 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" "-flto" } } */
+/* { dg-options "-march=rv64gc -mtune=sifive-5-series -mbranch-cost=6 -mmovcc -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+  (param "a"
+    (DECL_RTL (reg/v:DI <2> [ a ]))
+    (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+  (param "b"
+    (DECL_RTL (reg/v:DI <3> [ b ]))
+    (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+  (insn-chain
+    (block 2
+      (edge-from entry (flags "FALLTHRU"))
+      (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 2 (set (reg/v:DI <2> [ a ])
+                    (reg:DI a0 [ a ])) "cset-sext.c":8:1
+               (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+      (cinsn 3 (set (reg/v:DI <3> [ b ])
+                    (reg:DI a1 [ b ])) "cset-sext.c":8:1
+               (expr_list:REG_DEAD (reg:DI a1 [ b ])))
+      (cnote 4 NOTE_INSN_FUNCTION_BEG)
+      (cjump_insn 8 (set (pc)
+                         (if_then_else (eq (reg/v:DI <3> [ b ])
+                                           (const_int 0))
+                                       (label_ref:DI 24)
+                                       (pc))) "cset-sext.c":9:6
+                    (expr_list:REG_DEAD (reg/v:DI <3> [ b ])
+                                        (int_list:REG_BR_PROB 365072228)))
+      (edge-to 4)
+      (edge-to 3 (flags "FALLTHRU"))
+    ) ;; block 2
+    (block 3
+      (edge-from 2 (flags "FALLTHRU"))
+      (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 10 (set (reg:SI <5>)
+                     (ne:SI (reg/v:DI <2> [ a ])
+                            (const_int 0))) "cset-sext.c":11:11
+                (expr_list:REG_DEAD (reg/v:DI <2> [ a ])))
+      (cinsn 11 (set (reg:DI <1> [ <retval> ])
+                     (sign_extend:DI (reg:SI <5>))) "cset-sext.c":11:11
+                (expr_list:REG_DEAD (reg:SI <5>)))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 3
+    (block 4
+      (edge-from 2)
+      (clabel 24 3)
+      (cnote 23 [bb 4] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 5 (set (reg:DI <1> [ <retval> ])
+                    (const_int 0)) "cset-sext.c":10:12)
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 4
+    (block 5
+      (edge-from 4 (flags "FALLTHRU"))
+      (edge-from 3 (flags "FALLTHRU"))
+      (clabel 12 2)
+      (cnote 13 [bb 5] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 18 (set (reg/i:DI a0)
+                     (reg:DI <1> [ <retval> ])) "cset-sext.c":15:1
+                (expr_list:REG_DEAD (reg:DI <1> [ <retval> ])))
+      (cinsn 19 (use (reg/i:DI a0)) "cset-sext.c":15:1)
+      (edge-to exit (flags "FALLTHRU"))
+    ) ;; block 5
+  ) ;; insn-chain
+  (crtl
+    (return_rtx
+      (reg/i:DI a0)
+    ) ;; return_rtx
+  ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+	snez	a1,a1
+	neg	a1,a1
+	snez	a0,a0
+	and	a0,a1,a0
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 2 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
Index: gcc/gcc/testsuite/gcc.target/riscv/cset-sext-rtl32.c
===================================================================
--- /dev/null
+++ gcc/gcc/testsuite/gcc.target/riscv/cset-sext-rtl32.c
@@ -0,0 +1,84 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv32 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" "-flto" } } */
+/* { dg-options "-march=rv32gc -mtune=sifive-5-series -mbranch-cost=6 -mmovcc -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+  (param "a"
+    (DECL_RTL (reg/v:SI <2> [ a ]))
+    (DECL_RTL_INCOMING (reg:SI a0 [ a ])))
+  (param "b"
+    (DECL_RTL (reg/v:SI <3> [ b ]))
+    (DECL_RTL_INCOMING (reg:SI a1 [ b ])))
+  (insn-chain
+    (block 2
+      (edge-from entry (flags "FALLTHRU"))
+      (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 2 (set (reg/v:SI <2> [ a ])
+                    (reg:SI a0 [ a ])) "cset-sext.c":8:1
+               (expr_list:REG_DEAD (reg:SI a0 [ a ])))
+      (cinsn 3 (set (reg/v:SI <3> [ b ])
+                    (reg:SI a1 [ b ])) "cset-sext.c":8:1
+               (expr_list:REG_DEAD (reg:SI a1 [ b ])))
+      (cnote 4 NOTE_INSN_FUNCTION_BEG)
+      (cjump_insn 8 (set (pc)
+                         (if_then_else (eq (reg/v:SI <3> [ b ])
+                                           (const_int 0))
+                                       (label_ref:SI 23)
+                                       (pc))) "cset-sext.c":9:6
+                    (int_list:REG_BR_PROB 365072228))
+      (edge-to 4)
+      (edge-to 3 (flags "FALLTHRU"))
+    ) ;; block 2
+    (block 3
+      (edge-from 2 (flags "FALLTHRU"))
+      (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 10 (set (reg:SI <1> [ <retval> ])
+                     (ne:SI (reg/v:SI <2> [ a ])
+                            (const_int 0))) "cset-sext.c":11:11
+                (expr_list:REG_DEAD (reg/v:SI <2> [ a ])))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 3
+    (block 4
+      (edge-from 2)
+      (clabel 23 3)
+      (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 5 (set (reg:SI <1> [ <retval> ])
+                    (const_int 0)) "cset-sext.c":10:12
+               (expr_list:REG_DEAD (reg/v:SI <3> [ b ])))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 4
+    (block 5
+      (edge-from 4 (flags "FALLTHRU"))
+      (edge-from 3 (flags "FALLTHRU"))
+      (clabel 16 1)
+      (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 17 (set (reg/i:SI a0)
+                     (reg:SI <1> [ <retval> ])) "cset-sext.c":15:1
+                (expr_list:REG_DEAD (reg:SI <1> [ <retval> ])))
+      (cinsn 18 (use (reg/i:SI a0)) "cset-sext.c":15:1)
+      (edge-to exit (flags "FALLTHRU"))
+    ) ;; block 5
+  ) ;; insn-chain
+  (crtl
+    (return_rtx
+      (reg/i:SI a0)
+    ) ;; return_rtx
+  ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+	snez	a1,a1
+	neg	a1,a1
+	snez	a0,a0
+	and	a0,a1,a0
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 2 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
Index: gcc/gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl.c
===================================================================
--- /dev/null
+++ gcc/gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl.c
@@ -0,0 +1,88 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv64gc -mtune=sifive-7-series -mbranch-cost=1 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+  (param "a"
+    (DECL_RTL (reg/v:DI <2> [ a ]))
+    (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+  (param "b"
+    (DECL_RTL (reg/v:DI <3> [ b ]))
+    (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+  (insn-chain
+    (block 2
+      (edge-from entry (flags "FALLTHRU"))
+      (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 2 (set (reg/v:DI <2> [ a ])
+                    (reg:DI a0 [ a ])) "cset-sext-sfb.c":8:1
+               (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+      (cinsn 3 (set (reg/v:DI <3> [ b ])
+                    (reg:DI a1 [ b ])) "cset-sext-sfb.c":8:1
+               (expr_list:REG_DEAD (reg:DI a1 [ b ])))
+      (cnote 4 NOTE_INSN_FUNCTION_BEG)
+      (cjump_insn 8 (set (pc)
+                         (if_then_else (eq (reg/v:DI <3> [ b ])
+                                           (const_int 0))
+                                       (label_ref:DI 24)
+                                       (pc))) "cset-sext-sfb.c":9:6
+                    (expr_list:REG_DEAD (reg/v:DI <3> [ b ])
+                                        (int_list:REG_BR_PROB 365072228)))
+      (edge-to 4)
+      (edge-to 3 (flags "FALLTHRU"))
+    ) ;; block 2
+    (block 3
+      (edge-from 2 (flags "FALLTHRU"))
+      (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 10 (set (reg:SI <5>)
+                     (ne:SI (reg/v:DI <2> [ a ])
+                            (const_int 0))) "cset-sext-sfb.c":11:11
+                (expr_list:REG_DEAD (reg/v:DI <2> [ a ])))
+      (cinsn 11 (set (reg:DI <1> [ <retval> ])
+                     (sign_extend:DI (reg:SI <5>))) "cset-sext-sfb.c":11:11
+                (expr_list:REG_DEAD (reg:SI <5>)))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 3
+    (block 4
+      (edge-from 2)
+      (clabel 24 3)
+      (cnote 23 [bb 4] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 5 (set (reg:DI <1> [ <retval> ])
+                    (const_int 0)) "cset-sext-sfb.c":10:12)
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 4
+    (block 5
+      (edge-from 4 (flags "FALLTHRU"))
+      (edge-from 3 (flags "FALLTHRU"))
+      (clabel 12 2)
+      (cnote 13 [bb 5] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 18 (set (reg/i:DI a0)
+                     (reg:DI <1> [ <retval> ])) "cset-sext-sfb.c":15:1
+                (expr_list:REG_DEAD (reg:DI <1> [ <retval> ])))
+      (cinsn 19 (use (reg/i:DI a0)) "cset-sext-sfb.c":15:1)
+      (edge-to exit (flags "FALLTHRU"))
+    ) ;; block 5
+  ) ;; insn-chain
+  (crtl
+    (return_rtx
+      (reg/i:DI a0)
+    ) ;; return_rtx
+  ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect short forward branch assembly like:
+
+	snez	a0,a0
+	bne	a1,zero,1f	# movcc
+	mv	a0,zero
+1:
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\sbne\\s\[^\\s\]+\\s# movcc\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\sbeq\\s" } } */
Index: gcc/gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl32.c
===================================================================
--- /dev/null
+++ gcc/gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl32.c
@@ -0,0 +1,85 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv32 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv32gc -mtune=sifive-7-series -mbranch-cost=1 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+  (param "a"
+    (DECL_RTL (reg/v:SI <2> [ a ]))
+    (DECL_RTL_INCOMING (reg:SI a0 [ a ])))
+  (param "b"
+    (DECL_RTL (reg/v:SI <3> [ b ]))
+    (DECL_RTL_INCOMING (reg:SI a1 [ b ])))
+  (insn-chain
+    (block 2
+      (edge-from entry (flags "FALLTHRU"))
+      (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 2 (set (reg/v:SI <2> [ a ])
+                    (reg:SI a0 [ a ])) "cset-sext-sfb.c":8:1
+               (expr_list:REG_DEAD (reg:SI a0 [ a ])))
+      (cinsn 3 (set (reg/v:SI <3> [ b ])
+                    (reg:SI a1 [ b ])) "cset-sext-sfb.c":8:1
+               (expr_list:REG_DEAD (reg:SI a1 [ b ])))
+      (cnote 4 NOTE_INSN_FUNCTION_BEG)
+      (cjump_insn 8 (set (pc)
+                         (if_then_else (eq (reg/v:SI <3> [ b ])
+                                           (const_int 0))
+                                       (label_ref:SI 23)
+                                       (pc))) "cset-sext-sfb.c":9:6
+                    (int_list:REG_BR_PROB 365072228))
+      (edge-to 4)
+      (edge-to 3 (flags "FALLTHRU"))
+    ) ;; block 2
+    (block 3
+      (edge-from 2 (flags "FALLTHRU"))
+      (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 10 (set (reg:SI <1> [ <retval> ])
+                     (ne:SI (reg/v:SI <2> [ a ])
+                            (const_int 0))) "cset-sext-sfb.c":11:11
+                (expr_list:REG_DEAD (reg/v:SI <2> [ a ])))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 3
+    (block 4
+      (edge-from 2)
+      (clabel 23 3)
+      (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 5 (set (reg:SI <1> [ <retval> ])
+                    (const_int 0)) "cset-sext-sfb.c":10:12
+               (expr_list:REG_DEAD (reg/v:SI <3> [ b ])))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 4
+    (block 5
+      (edge-from 4 (flags "FALLTHRU"))
+      (edge-from 3 (flags "FALLTHRU"))
+      (clabel 16 1)
+      (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 17 (set (reg/i:SI a0)
+                     (reg:SI <1> [ <retval> ])) "cset-sext-sfb.c":15:1
+                (expr_list:REG_DEAD (reg:SI <1> [ <retval> ])))
+      (cinsn 18 (use (reg/i:SI a0)) "cset-sext-sfb.c":15:1)
+      (edge-to exit (flags "FALLTHRU"))
+    ) ;; block 5
+  ) ;; insn-chain
+  (crtl
+    (return_rtx
+      (reg/i:SI a0)
+    ) ;; return_rtx
+  ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect short forward branch assembly like:
+
+	snez	a0,a0
+	bne	a1,zero,1f	# movcc
+	mv	a0,zero
+1:
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\sbne\\s\[^\\s\]+\\s# movcc\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\sbeq\\s" } } */
Index: gcc/gcc/testsuite/gcc.target/riscv/cset-sext-thead-rtl.c
===================================================================
--- /dev/null
+++ gcc/gcc/testsuite/gcc.target/riscv/cset-sext-thead-rtl.c
@@ -0,0 +1,86 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv64gc_xtheadcondmov -mtune=thead-c906 -mbranch-cost=1 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+  (param "a"
+    (DECL_RTL (reg/v:DI <2> [ a ]))
+    (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+  (param "b"
+    (DECL_RTL (reg/v:DI <3> [ b ]))
+    (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+  (insn-chain
+    (block 2
+      (edge-from entry (flags "FALLTHRU"))
+      (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 2 (set (reg/v:DI <2> [ a ])
+                    (reg:DI a0 [ a ])) "cset-sext-thead.c":8:1
+               (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+      (cinsn 3 (set (reg/v:DI <3> [ b ])
+                    (reg:DI a1 [ b ])) "cset-sext-thead.c":8:1
+               (expr_list:REG_DEAD (reg:DI a1 [ b ])))
+      (cnote 4 NOTE_INSN_FUNCTION_BEG)
+      (cjump_insn 8 (set (pc)
+                         (if_then_else (eq (reg/v:DI <3> [ b ])
+                                           (const_int 0))
+                                       (label_ref:DI 24)
+                                       (pc))) "cset-sext-thead.c":9:6
+                     (expr_list:REG_DEAD (reg/v:DI <3> [ b ])
+                                         (int_list:REG_BR_PROB 365072228)))
+      (edge-to 4)
+      (edge-to 3 (flags "FALLTHRU"))
+    ) ;; block 2
+    (block 3
+      (edge-from 2 (flags "FALLTHRU"))
+      (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 10 (set (reg:SI <5>)
+                     (ne:SI (reg/v:DI <2> [ a ])
+                            (const_int 0))) "cset-sext-thead.c":11:11
+                (expr_list:REG_DEAD (reg/v:DI <2> [ a ])))
+      (cinsn 11 (set (reg:DI <1> [ <retval> ])
+                     (sign_extend:DI (reg:SI <5>))) "cset-sext-thead.c":11:11
+                (expr_list:REG_DEAD (reg:SI <5>)))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 3
+    (block 4
+      (edge-from 2)
+      (clabel 24 3)
+      (cnote 23 [bb 4] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 5 (set (reg:DI <1> [ <retval> ])
+                    (const_int 0)) "cset-sext-thead.c":10:12)
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 4
+    (block 5
+      (edge-from 4 (flags "FALLTHRU"))
+      (edge-from 3 (flags "FALLTHRU"))
+      (clabel 12 2)
+      (cnote 13 [bb 5] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 18 (set (reg/i:DI a0)
+                     (reg:DI <1> [ <retval> ])) "cset-sext-thead.c":15:1
+                (expr_list:REG_DEAD (reg:DI <1> [ <retval> ])))
+      (cinsn 19 (use (reg/i:DI a0)) "cset-sext-thead.c":15:1)
+      (edge-to exit (flags "FALLTHRU"))
+    ) ;; block 5
+  ) ;; insn-chain
+  (crtl
+    (return_rtx
+      (reg/i:DI a0)
+    ) ;; return_rtx
+  ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+	snez	a0,a0
+	th.mveqz	a0,zero,a1
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\s(?:th\\.mveqz|th\\.mvnez)\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
Index: gcc/gcc/testsuite/gcc.target/riscv/cset-sext-ventana-rtl.c
===================================================================
--- /dev/null
+++ gcc/gcc/testsuite/gcc.target/riscv/cset-sext-ventana-rtl.c
@@ -0,0 +1,86 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv64gc_xventanacondops -mtune=rocket -mbranch-cost=3 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+  (param "a"
+    (DECL_RTL (reg/v:DI <2> [ a ]))
+    (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+  (param "b"
+    (DECL_RTL (reg/v:DI <3> [ b ]))
+    (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+  (insn-chain
+    (block 2
+      (edge-from entry (flags "FALLTHRU"))
+      (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 2 (set (reg/v:DI <2> [ a ])
+                    (reg:DI a0 [ a ])) "cset-sext-ventana.c":8:1
+               (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+      (cinsn 3 (set (reg/v:DI <3> [ b ])
+                    (reg:DI a1 [ b ])) "cset-sext-ventana.c":8:1
+               (expr_list:REG_DEAD (reg:DI a1 [ b ])))
+      (cnote 4 NOTE_INSN_FUNCTION_BEG)
+      (cjump_insn 8 (set (pc)
+                         (if_then_else (eq (reg/v:DI <3> [ b ])
+                                           (const_int 0))
+                                       (label_ref:DI 24)
+                                       (pc))) "cset-sext-ventana.c":9:6
+                    (expr_list:REG_DEAD (reg/v:DI <3> [ b ])
+                                        (int_list:REG_BR_PROB 365072228)))
+      (edge-to 4)
+      (edge-to 3 (flags "FALLTHRU"))
+    ) ;; block 2
+    (block 3
+      (edge-from 2 (flags "FALLTHRU"))
+      (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 10 (set (reg:SI <5>)
+                     (ne:SI (reg/v:DI <2> [ a ])
+                            (const_int 0))) "cset-sext-ventana.c":11:11
+                (expr_list:REG_DEAD (reg/v:DI <2> [ a ])))
+      (cinsn 11 (set (reg:DI <1> [ <retval> ])
+                     (sign_extend:DI (reg:SI <5>))) "cset-sext-ventana.c":11:11
+                (expr_list:REG_DEAD (reg:SI <5>)))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 3
+    (block 4
+      (edge-from 2)
+      (clabel 24 3)
+      (cnote 23 [bb 4] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 5 (set (reg:DI <1> [ <retval> ])
+                    (const_int 0)) "cset-sext-ventana.c":10:12)
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 4
+    (block 5
+      (edge-from 4 (flags "FALLTHRU"))
+      (edge-from 3 (flags "FALLTHRU"))
+      (clabel 12 2)
+      (cnote 13 [bb 5] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 18 (set (reg/i:DI a0)
+                     (reg:DI <1> [ <retval> ])) "cset-sext-ventana.c":15:1
+                (expr_list:REG_DEAD (reg:DI <1> [ <retval> ])))
+      (cinsn 19 (use (reg/i:DI a0)) "cset-sext-ventana.c":15:1)
+      (edge-to exit (flags "FALLTHRU"))
+    ) ;; block 5
+  ) ;; insn-chain
+  (crtl
+    (return_rtx
+      (reg/i:DI a0)
+    ) ;; return_rtx
+  ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+	snez	a0,a0
+	vt.maskc	a0,a0,a1
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\svt\\.maskc\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
Index: gcc/gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl.c
===================================================================
--- /dev/null
+++ gcc/gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl.c
@@ -0,0 +1,86 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv64 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv64gc_zicond -mtune=rocket -mbranch-cost=3 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+  (param "a"
+    (DECL_RTL (reg/v:DI <2> [ a ]))
+    (DECL_RTL_INCOMING (reg:DI a0 [ a ])))
+  (param "b"
+    (DECL_RTL (reg/v:DI <3> [ b ]))
+    (DECL_RTL_INCOMING (reg:DI a1 [ b ])))
+  (insn-chain
+    (block 2
+      (edge-from entry (flags "FALLTHRU"))
+      (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 2 (set (reg/v:DI <2> [ a ])
+                    (reg:DI a0 [ a ])) "cset-sext-zicond.c":8:1
+               (expr_list:REG_DEAD (reg:DI a0 [ a ])))
+      (cinsn 3 (set (reg/v:DI <3> [ b ])
+                    (reg:DI a1 [ b ])) "cset-sext-zicond.c":8:1
+               (expr_list:REG_DEAD (reg:DI a1 [ b ])))
+      (cnote 4 NOTE_INSN_FUNCTION_BEG)
+      (cjump_insn 8 (set (pc)
+                         (if_then_else (eq (reg/v:DI <3> [ b ])
+                                           (const_int 0))
+                                       (label_ref:DI 24)
+                                       (pc))) "cset-sext-zicond.c":9:6
+                    (expr_list:REG_DEAD (reg/v:DI <3> [ b ])
+                                        (int_list:REG_BR_PROB 365072228)))
+      (edge-to 4)
+      (edge-to 3 (flags "FALLTHRU"))
+    ) ;; block 2
+    (block 3
+      (edge-from 2 (flags "FALLTHRU"))
+      (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 10 (set (reg:SI <5>)
+                     (ne:SI (reg/v:DI <2> [ a ])
+                            (const_int 0))) "cset-sext-zicond.c":11:11
+                (expr_list:REG_DEAD (reg/v:DI <2> [ a ])))
+      (cinsn 11 (set (reg:DI <1> [ <retval> ])
+                     (sign_extend:DI (reg:SI <5>))) "cset-sext-zicond.c":11:11
+                (expr_list:REG_DEAD (reg:SI <5>)))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 3
+    (block 4
+      (edge-from 2)
+      (clabel 24 3)
+      (cnote 23 [bb 4] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 5 (set (reg:DI <1> [ <retval> ])
+                    (const_int 0)) "cset-sext-zicond.c":10:12)
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 4
+    (block 5
+      (edge-from 4 (flags "FALLTHRU"))
+      (edge-from 3 (flags "FALLTHRU"))
+      (clabel 12 2)
+      (cnote 13 [bb 5] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 18 (set (reg/i:DI a0)
+                     (reg:DI <1> [ <retval> ])) "cset-sext-zicond.c":15:1
+                (expr_list:REG_DEAD (reg:DI <1> [ <retval> ])))
+      (cinsn 19 (use (reg/i:DI a0)) "cset-sext-zicond.c":15:1)
+      (edge-to exit (flags "FALLTHRU"))
+    ) ;; block 5
+  ) ;; insn-chain
+  (crtl
+    (return_rtx
+      (reg/i:DI a0)
+    ) ;; return_rtx
+  ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+	snez	a0,a0
+	czero.eqz	a0,a0,a1
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\sczero\\.eqz\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
Index: gcc/gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl32.c
===================================================================
--- /dev/null
+++ gcc/gcc/testsuite/gcc.target/riscv/cset-sext-zicond-rtl32.c
@@ -0,0 +1,83 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target rv32 } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-flto" } } */
+/* { dg-options "-march=rv32gc_zicond -mtune=rocket -mbranch-cost=3 -fdump-rtl-ce1" } */
+
+int __RTL (startwith ("ce1"))
+foo (long a, long b)
+{
+(function "foo"
+  (param "a"
+    (DECL_RTL (reg/v:SI <2> [ a ]))
+    (DECL_RTL_INCOMING (reg:SI a0 [ a ])))
+  (param "b"
+    (DECL_RTL (reg/v:SI <3> [ b ]))
+    (DECL_RTL_INCOMING (reg:SI a1 [ b ])))
+  (insn-chain
+    (block 2
+      (edge-from entry (flags "FALLTHRU"))
+      (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 2 (set (reg/v:SI <2> [ a ])
+                    (reg:SI a0 [ a ])) "cset-sext-zicond.c":8:1
+               (expr_list:REG_DEAD (reg:SI a0 [ a ])))
+      (cinsn 3 (set (reg/v:SI <3> [ b ])
+                    (reg:SI a1 [ b ])) "cset-sext-zicond.c":8:1
+               (expr_list:REG_DEAD (reg:SI a1 [ b ])))
+      (cnote 4 NOTE_INSN_FUNCTION_BEG)
+      (cjump_insn 8 (set (pc)
+                         (if_then_else (eq (reg/v:SI <3> [ b ])
+                                           (const_int 0))
+                                       (label_ref:SI 23)
+                                       (pc))) "cset-sext-zicond.c":9:6
+                    (int_list:REG_BR_PROB 365072228))
+      (edge-to 4)
+      (edge-to 3 (flags "FALLTHRU"))
+    ) ;; block 2
+    (block 3
+      (edge-from 2 (flags "FALLTHRU"))
+      (cnote 9 [bb 3] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 10 (set (reg:SI <1> [ <retval> ])
+                     (ne:SI (reg/v:SI <2> [ a ])
+                            (const_int 0))) "cset-sext-zicond.c":11:11
+                (expr_list:REG_DEAD (reg/v:SI <2> [ a ])))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 3
+    (block 4
+      (edge-from 2)
+      (clabel 23 3)
+      (cnote 22 [bb 4] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 5 (set (reg:SI <1> [ <retval> ])
+                    (const_int 0)) "cset-sext-zicond.c":10:12
+               (expr_list:REG_DEAD (reg/v:SI <3> [ b ])))
+      (edge-to 5 (flags "FALLTHRU"))
+    ) ;; block 4
+    (block 5
+      (edge-from 4 (flags "FALLTHRU"))
+      (edge-from 3 (flags "FALLTHRU"))
+      (clabel 16 1)
+      (cnote 19 [bb 5] NOTE_INSN_BASIC_BLOCK)
+      (cinsn 17 (set (reg/i:SI a0)
+                     (reg:SI <1> [ <retval> ])) "cset-sext-zicond.c":15:1
+                (expr_list:REG_DEAD (reg:SI <1> [ <retval> ])))
+      (cinsn 18 (use (reg/i:SI a0)) "cset-sext-zicond.c":15:1)
+      (edge-to exit (flags "FALLTHRU"))
+    ) ;; block 5
+  ) ;; insn-chain
+  (crtl
+    (return_rtx
+      (reg/i:SI a0)
+    ) ;; return_rtx
+  ) ;; crtl
+) ;; function "foo"
+}
+
+/* Expect branchless assembly like:
+
+	snez	a0,a0
+	czero.eqz	a0,a0,a1
+ */
+
+/* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 1 "ce1" } } */
+/* { dg-final { scan-assembler-times "\\ssnez\\s" 1 } } */
+/* { dg-final { scan-assembler-times "\\sczero\\.eqz\\s" 1 } } */
+/* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] RISC-V/testsuite: Add RTL pr105314.c testcase variants
  2024-01-24 11:16 ` [PATCH 1/2] RISC-V/testsuite: Add RTL pr105314.c testcase variants Maciej W. Rozycki
@ 2024-01-24 17:09   ` Jeff Law
  0 siblings, 0 replies; 4+ messages in thread
From: Jeff Law @ 2024-01-24 17:09 UTC (permalink / raw)
  To: Maciej W. Rozycki, gcc-patches
  Cc: Andrew Waterman, Jim Wilson, Kito Cheng, Palmer Dabbelt



On 1/24/24 04:16, Maciej W. Rozycki wrote:
> Add a pair of RTL tests, for RV64 and RV32 respectively, corresponding
> to the existing pr105314.c test.  They have been produced from RTL code
> as at the entry of the "ce1" pass for pr105314.c compiled at -O3.
> 
> 	gcc/testsuite/
> 	* gcc.target/riscv/pr105314-rtl.c: New file.
> 	* gcc.target/riscv/pr105314-rtl32.c: New file.
OK
jeff


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] RISC-V/testsuite: Add RTL cset-sext.c testcase variants
  2024-01-24 11:16 ` [PATCH 2/2] RISC-V/testsuite: Add RTL cset-sext.c " Maciej W. Rozycki
@ 2024-01-24 17:10   ` Jeff Law
  0 siblings, 0 replies; 4+ messages in thread
From: Jeff Law @ 2024-01-24 17:10 UTC (permalink / raw)
  To: Maciej W. Rozycki, gcc-patches
  Cc: Andrew Waterman, Jim Wilson, Kito Cheng, Palmer Dabbelt



On 1/24/24 04:16, Maciej W. Rozycki wrote:
> Add RTL tests, for RV64 and RV32 where appropriate, corresponding to the
> existing cset-sext.c tests.  They have been produced from RTL code as at
> the entry of the "ce1" pass for the respective cset-sext.c tests built
> at -O3.
> 
> 	gcc/testsuite/
> 	* gcc.target/riscv/cset-sext-rtl.c: New file.
> 	* gcc.target/riscv/cset-sext-rtl32.c: New file.
> 	* gcc.target/riscv/cset-sext-sfb-rtl.c: New file.
> 	* gcc.target/riscv/cset-sext-sfb-rtl32.c: New file.
> 	* gcc.target/riscv/cset-sext-thead-rtl.c: New file.
> 	* gcc.target/riscv/cset-sext-ventana-rtl.c: New file.
> 	* gcc.target/riscv/cset-sext-zicond-rtl.c: New file.
> 	* gcc.target/riscv/cset-sext-zicond-rtl32.c: New file.
OK
jeff

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-01-24 17:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <alpine.DEB.2.20.2401241102150.14163@tpp.orcam.me.uk>
2024-01-24 11:16 ` [PATCH 1/2] RISC-V/testsuite: Add RTL pr105314.c testcase variants Maciej W. Rozycki
2024-01-24 17:09   ` Jeff Law
2024-01-24 11:16 ` [PATCH 2/2] RISC-V/testsuite: Add RTL cset-sext.c " Maciej W. Rozycki
2024-01-24 17:10   ` Jeff Law

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).