]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[committed] RISC-V testsuite changes to test clmul expansion of CRCs
authorMariam Arutunian <mariamarutunian@gmail.com>
Mon, 9 Dec 2024 14:29:36 +0000 (07:29 -0700)
committerJeff Law <jlaw@ventanamicro.com>
Mon, 9 Dec 2024 14:39:30 +0000 (07:39 -0700)
This testsuite only patch allows us to test code generation for CRC functions
using clmul instructions.

Conceptually it's trivial.  We already have various execution tests in
gcc.dg/torture.  We just define a new set of dg directives and include the
testcase in gcc.dg/torture.

The only gotcha in here is the need to change target-supports.exp.  It was
passing the default set of arguments down to the check_runtime routine, so they
always failed to assemble the testcase and we never claimed the ability to
execute Zbc, Zbkb or Zbkc extension code.

Again, NFC, just testsuite bits.  Pushing to the trunk.

Only aarch64 and x86 bits left ;-)

gcc/testsuite
* gcc.target/riscv/crc-1-zbc.c: New test.
* gcc.target/riscv/crc-1-zbkc.c: Likewise.
* gcc.target/riscv/crc-10-zbc.c: Likewise.
* gcc.target/riscv/crc-10-zbkc.c: Likewise.
* gcc.target/riscv/crc-12-zbc.c: Likewise.
* gcc.target/riscv/crc-12-zbkc.c: Likewise.
* gcc.target/riscv/crc-13-zbc.c: Likewise.
* gcc.target/riscv/crc-13-zbkc.c: Likewise.
* gcc.target/riscv/crc-14-zbc.c: Likewise.
* gcc.target/riscv/crc-14-zbkc.c: Likewise.
* gcc.target/riscv/crc-17-zbc.c: Likewise.
* gcc.target/riscv/crc-17-zbkc.c: Likewise.
* gcc.target/riscv/crc-18-zbc.c: Likewise.
* gcc.target/riscv/crc-18-zbkc.c: Likewise.
* gcc.target/riscv/crc-21-rv64-zbc.c: Likewise.
* gcc.target/riscv/crc-21-rv64-zbkc.c: Likewise.
* gcc.target/riscv/crc-22-zbc.c: Likewise.
* gcc.target/riscv/crc-22-zbkc.c: Likewise.
* gcc.target/riscv/crc-23-zbc.c: Likewise.
* gcc.target/riscv/crc-23-zbkc.c: Likewise.
* gcc.target/riscv/crc-4-zbc.c: Likewise.
* gcc.target/riscv/crc-4-zbkb.c: Likewise.
* gcc.target/riscv/crc-4-zbkc.c: Likewise.
* gcc.target/riscv/crc-5-zbc.c: Likewise.
* gcc.target/riscv/crc-5-zbkb.c: Likewise.
* gcc.target/riscv/crc-5-zbkc.c: Likewise.
* gcc.target/riscv/crc-6-zbc.c: Likewise.
* gcc.target/riscv/crc-6-zbkc.c: Likewise.
* gcc.target/riscv/crc-7-zbc.c: Likewise.
* gcc.target/riscv/crc-7-zbkc.c: Likewise.
* gcc.target/riscv/crc-8-zbc.c: Likewise.
* gcc.target/riscv/crc-8-zbkc.c: Likewise.
* gcc.target/riscv/crc-9-zbc.c: Likewise.
* gcc.target/riscv/crc-9-zbkc.c: Likewise.
* gcc.target/riscv/crc-CCIT-data16-zbc.c: Likewise.
* gcc.target/riscv/crc-CCIT-data16-zbkc.c: Likewise.
* gcc.target/riscv/crc-CCIT-data8-zbc.c: Likewise.
* gcc.target/riscv/crc-CCIT-data8-zbkc.c: Likewise.
* gcc.target/riscv/crc-coremark-16bitdata-zbc.c: Likewise.
* gcc.target/riscv/crc-coremark-16bitdata-zbkc.c: Likewise.
* lib/target-supports.exp (check_effective_target_riscv_zbc_ok): Set
gcc_march before compiling test program.
(check_effective_target_riscv_zbkc_ok): Likewise.
(check_effective_target_riscv_zbkb_ok): Likewise.
Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
43 files changed:
gcc/testsuite/gcc.target/riscv/crc-1-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-1-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-10-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-10-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-12-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-12-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-13-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-13-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-14-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-14-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-17-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-17-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-18-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-18-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-21-rv64-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-21-rv64-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-22-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-22-zbkb.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-22-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-23-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-23-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-4-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-4-zbkb.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-4-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-5-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-5-zbkb.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-5-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-6-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-6-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-7-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-7-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-8-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-8-zbkb.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-8-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-9-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-9-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-CCIT-data16-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-CCIT-data16-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-CCIT-data8-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-CCIT-data8-zbkc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-coremark-16bitdata-zbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/crc-coremark-16bitdata-zbkc.c [new file with mode: 0644]
gcc/testsuite/lib/target-supports.exp

diff --git a/gcc/testsuite/gcc.target/riscv/crc-1-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-1-zbc.c
new file mode 100644 (file)
index 0000000..aaeaa0d
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish  -fdisable-tree-phiopt2 -fdisable-tree-phiopt3" { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish  -fdisable-tree-phiopt2 -fdisable-tree-phiopt3" { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-1.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-1-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-1-zbkc.c
new file mode 100644 (file)
index 0000000..3af3363
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish  -fdisable-tree-phiopt2 -fdisable-tree-phiopt3" { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish  -fdisable-tree-phiopt2 -fdisable-tree-phiopt3" { target { rv32 } } } */
+
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-1.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-10-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-10-zbc.c
new file mode 100644 (file)
index 0000000..472d7be
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-10.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-10-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-10-zbkc.c
new file mode 100644 (file)
index 0000000..88f1c09
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-10.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-12-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-12-zbc.c
new file mode 100644 (file)
index 0000000..f1784ec
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish  -fdisable-tree-phiopt2 -fdisable-tree-phiopt3" { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish  -fdisable-tree-phiopt2 -fdisable-tree-phiopt3" { target { rv32 } } } */
+
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-12.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-12-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-12-zbkc.c
new file mode 100644 (file)
index 0000000..91a2cf9
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish  -fdisable-tree-phiopt2 -fdisable-tree-phiopt3" { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish  -fdisable-tree-phiopt2 -fdisable-tree-phiopt3" { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-12.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-13-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-13-zbc.c
new file mode 100644 (file)
index 0000000..3c6138c
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-13.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-13-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-13-zbkc.c
new file mode 100644 (file)
index 0000000..73a5b6a
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-13.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-14-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-14-zbc.c
new file mode 100644 (file)
index 0000000..486f3df
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-14.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-14-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-14-zbkc.c
new file mode 100644 (file)
index 0000000..9cccea7
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-14.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-17-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-17-zbc.c
new file mode 100644 (file)
index 0000000..bc22039
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-17.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-17-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-17-zbkc.c
new file mode 100644 (file)
index 0000000..025abc1
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-17.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-18-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-18-zbc.c
new file mode 100644 (file)
index 0000000..ad7e66d
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-18.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-18-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-18-zbkc.c
new file mode 100644 (file)
index 0000000..2b01738
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-18.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-21-rv64-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-21-rv64-zbc.c
new file mode 100644 (file)
index 0000000..503b412
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target { riscv64*-*-* && riscv_zbc_ok } } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish" { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish" { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-21.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-21-rv64-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-21-rv64-zbkc.c
new file mode 100644 (file)
index 0000000..2bf0172
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target { riscv64*-*-* && riscv_zbkc_ok } } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish" { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish" { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-21.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-22-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-22-zbc.c
new file mode 100644 (file)
index 0000000..005aa23
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-22.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-22-zbkb.c b/gcc/testsuite/gcc.target/riscv/crc-22-zbkb.c
new file mode 100644 (file)
index 0000000..74dd876
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do run { target riscv_zbkb } } */
+/* { dg-options "-march=rv64gc_zbkb -fdump-tree-crc-details" { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkb -fdump-tree-crc-details" { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Os" "-Oz" "-Og" "-flto"} } */
+
+#include "../../gcc.dg/torture/crc-22.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-22-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-22-zbkc.c
new file mode 100644 (file)
index 0000000..fef4618
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-22.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-23-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-23-zbc.c
new file mode 100644 (file)
index 0000000..1e3a99e
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-23.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-23-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-23-zbkc.c
new file mode 100644 (file)
index 0000000..a6537b0
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-23.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-4-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-4-zbc.c
new file mode 100644 (file)
index 0000000..d4bc3d9
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-4.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-4-zbkb.c b/gcc/testsuite/gcc.target/riscv/crc-4-zbkb.c
new file mode 100644 (file)
index 0000000..5a25fb4
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do run { target riscv_zbkb } } */
+/* { dg-options "-march=rv64gc_zbkb -fdump-tree-crc-details" { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkb -fdump-tree-crc-details" { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Os" "-Oz" "-Og" "-flto"} } */
+
+#include "../../gcc.dg/torture/crc-4.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-4-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-4-zbkc.c
new file mode 100644 (file)
index 0000000..e519ac5
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-4.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-5-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-5-zbc.c
new file mode 100644 (file)
index 0000000..927d8dd
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-5.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-5-zbkb.c b/gcc/testsuite/gcc.target/riscv/crc-5-zbkb.c
new file mode 100644 (file)
index 0000000..9cc661a
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do run { target riscv_zbkb } } */
+/* { dg-options "-march=rv64gc_zbkb -w -fdump-tree-crc-details" { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkb -w -fdump-tree-crc-details" { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Os" "-Oz" "-Og" "-flto"} } */
+
+#include "../../gcc.dg/torture/crc-5.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-5-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-5-zbkc.c
new file mode 100644 (file)
index 0000000..d8acc06
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-5.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-6-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-6-zbc.c
new file mode 100644 (file)
index 0000000..b01f67b
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-O3" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-6.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-6-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-6-zbkc.c
new file mode 100644 (file)
index 0000000..938163a
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-O3" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-6.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-7-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-7-zbc.c
new file mode 100644 (file)
index 0000000..f01186d
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-7.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-7-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-7-zbkc.c
new file mode 100644 (file)
index 0000000..114500b
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-7.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-8-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-8-zbc.c
new file mode 100644 (file)
index 0000000..f77d9a7
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-8.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-8-zbkb.c b/gcc/testsuite/gcc.target/riscv/crc-8-zbkb.c
new file mode 100644 (file)
index 0000000..a065fd2
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do run { target riscv_zbkb } } */
+/* { dg-options "-march=rv64gc_zbkb -fdump-tree-crc-details" { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkb -fdump-tree-crc-details" { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Os" "-Oz" "-Og" "-flto"} } */
+
+#include "../../gcc.dg/torture/crc-8.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-8-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-8-zbkc.c
new file mode 100644 (file)
index 0000000..bf12e0b
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-8.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-9-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-9-zbc.c
new file mode 100644 (file)
index 0000000..6af0484
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-O3" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-9.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-9-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-9-zbkc.c
new file mode 100644 (file)
index 0000000..f965f54
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv32gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-options "-march=rv64gc_zbkc -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-O3" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-9.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-CCIT-data16-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-CCIT-data16-zbc.c
new file mode 100644 (file)
index 0000000..ca27fda
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-CCIT-data16.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-CCIT-data16-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-CCIT-data16-zbkc.c
new file mode 100644 (file)
index 0000000..effd4ad
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-CCIT-data16.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-CCIT-data8-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-CCIT-data8-zbc.c
new file mode 100644 (file)
index 0000000..4a83190
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-CCIT-data8.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-CCIT-data8-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-CCIT-data8-zbkc.c
new file mode 100644 (file)
index 0000000..c4335e0
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-CCIT-data8.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-coremark-16bitdata-zbc.c b/gcc/testsuite/gcc.target/riscv/crc-coremark-16bitdata-zbc.c
new file mode 100644 (file)
index 0000000..5000e14
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbc_ok } } */
+/* { dg-options "-march=rv64gc_zbc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-coremark16-data16.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
diff --git a/gcc/testsuite/gcc.target/riscv/crc-coremark-16bitdata-zbkc.c b/gcc/testsuite/gcc.target/riscv/crc-coremark-16bitdata-zbkc.c
new file mode 100644 (file)
index 0000000..0d6acfb
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do run { target riscv_zbkc_ok } } */
+/* { dg-options "-march=rv64gc_zbkc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv64 } } } */
+/* { dg-options "-march=rv32gc_zbkc -w -fdump-tree-crc -fdump-rtl-dfinish " { target { rv32 } } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
+
+#include "../../gcc.dg/torture/crc-coremark16-data16.c"
+
+/* { dg-final { scan-tree-dump "calculates CRC!" "crc"} } */
+/* { dg-final { scan-tree-dump-times "Couldn't generate faster CRC code." 0 "crc"} } */
+/* { dg-final { scan-rtl-dump "clmul" "dfinish"} } */
index f2edbef92da3806ce7f1a1038374db67e45412a2..ed2a597804a4d848240e0d2f86983aab28288100 100644 (file)
@@ -2197,7 +2197,7 @@ proc check_effective_target_riscv_zbc_ok { } {
 
     # check if we can execute zbc insns with the given hardware or
     # simulator
-    set gcc_march [riscv_get_arch]
+    set gcc_march [regsub {[[:alnum:]]*} [riscv_get_arch] &zbc]
     if { [check_runtime ${gcc_march}_zbc_exec {
        int main()
        {
@@ -2221,7 +2221,7 @@ proc check_effective_target_riscv_zbkb_ok { } {
 
     # check if we can execute zbkb insns with the given hardware or
     # simulator
-    set gcc_march [riscv_get_arch]
+    set gcc_march [regsub {[[:alnum:]]*} [riscv_get_arch] &zbkb]
     if { [check_runtime ${gcc_march}_zbkb_exec {
        int main()
        {
@@ -2244,7 +2244,7 @@ proc check_effective_target_riscv_zbkc_ok { } {
 
     # check if we can execute zbkc insns with the given hardware or
     # simulator
-    set gcc_march [riscv_get_arch]
+    set gcc_march [regsub {[[:alnum:]]*} [riscv_get_arch] &zbkc]
     if { [check_runtime ${gcc_march}_zbkc_exec {
        int main()
        {