123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- From 3d7a1465ebda56d1e4610788acffc68f4d8ecfaa Mon Sep 17 00:00:00 2001
- From: Xiao Zeng <zengxiao@eswincomputing.com>
- Date: Tue, 26 Sep 2023 12:40:58 -0600
- Subject: [PATCH 20/30] RISC-V: Add zicond tests
- These are tests from patch 3/5 of Ziao Zeng's zicond submission.
- gcc/testsuite/ChangeLog:
- * gcc.target/riscv/zicond-primitiveSemantics_return_0_imm.c: New test.
- * gcc.target/riscv/zicond-primitiveSemantics_return_imm_imm.c: New test.
- * gcc.target/riscv/zicond-primitiveSemantics_return_imm_reg.c: New test.
- * gcc.target/riscv/zicond-primitiveSemantics_return_reg_reg.c: New test.
- Co-Authored-By: Jeff Law <jlaw@ventanamicro.com>
- ---
- .../zicond-primitiveSemantics_return_0_imm.c | 65 +++++++++++++++++
- ...zicond-primitiveSemantics_return_imm_imm.c | 73 +++++++++++++++++++
- ...zicond-primitiveSemantics_return_imm_reg.c | 65 +++++++++++++++++
- ...zicond-primitiveSemantics_return_reg_reg.c | 65 +++++++++++++++++
- 4 files changed, 268 insertions(+)
- create mode 100644 gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_0_imm.c
- create mode 100644 gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_imm.c
- create mode 100644 gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_reg.c
- create mode 100644 gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_reg_reg.c
- diff --git a/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_0_imm.c b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_0_imm.c
- new file mode 100644
- index 00000000000..76773d32a8b
- --- /dev/null
- +++ b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_0_imm.c
- @@ -0,0 +1,65 @@
- +/* { dg-do compile } */
- +/* { dg-options "-march=rv64gc_zicond -mabi=lp64d" { target { rv64 } } } */
- +/* { dg-options "-march=rv32gc_zicond -mabi=ilp32f" { target { rv32 } } } */
- +/* { dg-skip-if "" { *-*-* } {"-O0" "-Os" "-Og" "-Oz"} } */
- +
- +long primitiveSemantics_return_0_imm_00(long a, long b) {
- + return a == 0 ? 0 : 3;
- +}
- +
- +long primitiveSemantics_return_0_imm_01(long a, long b) {
- + return a != 0 ? 0 : 3;
- +}
- +
- +long primitiveSemantics_return_0_imm_02(long a, long b) {
- + return a == 0 ? 3 : 0;
- +}
- +
- +long primitiveSemantics_return_0_imm_03(long a, long b) {
- + return a != 0 ? 3 : 0;
- +}
- +
- +long primitiveSemantics_return_0_imm_04(long a, long b) {
- + if (a)
- + b = 0;
- + else
- + b = 3;
- + return b;
- +}
- +
- +long primitiveSemantics_return_0_imm_05(long a, long b) {
- + if (!a)
- + b = 0;
- + else
- + b = 3;
- + return b;
- +}
- +
- +int primitiveSemantics_return_0_imm_06(int a, int b) { return a == 0 ? 0 : 3; }
- +
- +int primitiveSemantics_return_0_imm_07(int a, int b) { return a != 0 ? 0 : 3; }
- +
- +int primitiveSemantics_return_0_imm_08(int a, int b) { return a == 0 ? 3 : 0; }
- +
- +int primitiveSemantics_return_0_imm_09(int a, int b) { return a != 0 ? 3 : 0; }
- +
- +int primitiveSemantics_return_0_imm_10(int a, int b) {
- + if (a)
- + b = 0;
- + else
- + b = 3;
- + return b;
- +}
- +
- +int primitiveSemantics_return_0_imm_11(int a, int b) {
- + if (!a)
- + b = 0;
- + else
- + b = 3;
- + return b;
- +}
- +
- +/* { dg-final { scan-assembler-times "czero.eqz" 6 } } */
- +/* { dg-final { scan-assembler-times "czero.nez" 6 } } */
- +/* { dg-final { scan-assembler-not "beq" } } */
- +/* { dg-final { scan-assembler-not "bne" } } */
- diff --git a/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_imm.c b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_imm.c
- new file mode 100644
- index 00000000000..2b4ee956eb7
- --- /dev/null
- +++ b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_imm.c
- @@ -0,0 +1,73 @@
- +/* { dg-do compile } */
- +/* { dg-options "-march=rv64gc_zicond -mabi=lp64d" { target { rv64 } } } */
- +/* { dg-options "-march=rv32gc_zicond -mabi=ilp32f" { target { rv32 } } } */
- +/* { dg-skip-if "" { *-*-* } {"-O0" "-Os" "-Og" "-Oz"} } */
- +
- +long primitiveSemantics_return_imm_imm_00(long a, long b) {
- + return a == 0 ? 4 : 6;
- +}
- +
- +long primitiveSemantics_return_imm_imm_01(long a, long b) {
- + return a != 0 ? 4 : 6;
- +}
- +
- +long primitiveSemantics_return_imm_imm_02(long a, long b) {
- + return a == 0 ? 6 : 4;
- +}
- +
- +long primitiveSemantics_return_imm_imm_03(long a, long b) {
- + return a != 0 ? 6 : 4;
- +}
- +
- +long primitiveSemantics_return_imm_imm_04(long a, long b) {
- + if (a)
- + b = 4;
- + else
- + b = 6;
- + return b;
- +}
- +
- +long primitiveSemantics_return_imm_imm_05(long a, long b) {
- + if (!a)
- + b = 4;
- + else
- + b = 6;
- + return b;
- +}
- +
- +int primitiveSemantics_return_imm_imm_06(int a, int b) {
- + return a == 0 ? 4 : 6;
- +}
- +
- +int primitiveSemantics_return_imm_imm_07(int a, int b) {
- + return a != 0 ? 4 : 6;
- +}
- +
- +int primitiveSemantics_return_imm_imm_08(int a, int b) {
- + return a == 0 ? 6 : 4;
- +}
- +
- +int primitiveSemantics_return_imm_imm_09(int a, int b) {
- + return a != 0 ? 6 : 4;
- +}
- +
- +int primitiveSemantics_return_imm_imm_10(int a, int b) {
- + if (a)
- + b = 4;
- + else
- + b = 6;
- + return b;
- +}
- +
- +int primitiveSemantics_return_imm_imm_11(int a, int b) {
- + if (!a)
- + b = 4;
- + else
- + b = 6;
- + return b;
- +}
- +
- +/* { dg-final { scan-assembler-times "czero.eqz" 6 } } */
- +/* { dg-final { scan-assembler-times "czero.nez" 6 } } */
- +/* { dg-final { scan-assembler-not "beq" } } */
- +/* { dg-final { scan-assembler-not "bne" } } */
- diff --git a/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_reg.c b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_reg.c
- new file mode 100644
- index 00000000000..4a96560eb61
- --- /dev/null
- +++ b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_reg.c
- @@ -0,0 +1,65 @@
- +/* { dg-do compile } */
- +/* { dg-options "-march=rv64gc_zicond -mabi=lp64d" { target { rv64 } } } */
- +/* { dg-options "-march=rv32gc_zicond -mabi=ilp32f" { target { rv32 } } } */
- +/* { dg-skip-if "" { *-*-* } {"-O0" "-Os" "-Og" "-Oz"} } */
- +
- +long primitiveSemantics_return_imm_reg_00(long a, long b) {
- + return a == 0 ? 1 : b;
- +}
- +
- +long primitiveSemantics_return_imm_reg_01(long a, long b) {
- + return a != 0 ? 1 : b;
- +}
- +
- +long primitiveSemantics_return_imm_reg_02(long a, long b) {
- + return a == 0 ? b : 1;
- +}
- +
- +long primitiveSemantics_return_imm_reg_03(long a, long b) {
- + return a != 0 ? b : 1;
- +}
- +
- +long primitiveSemantics_return_imm_reg_04(long a, long b) {
- + if (a)
- + b = 1;
- + return b;
- +}
- +
- +long primitiveSemantics_return_imm_reg_05(long a, long b) {
- + if (!a)
- + b = 1;
- + return b;
- +}
- +
- +int primitiveSemantics_return_imm_reg_06(int a, int b) {
- + return a == 0 ? 1 : b;
- +}
- +
- +int primitiveSemantics_return_imm_reg_07(int a, int b) {
- + return a != 0 ? 1 : b;
- +}
- +
- +int primitiveSemantics_return_imm_reg_08(int a, int b) {
- + return a == 0 ? b : 1;
- +}
- +
- +int primitiveSemantics_return_imm_reg_09(int a, int b) {
- + return a != 0 ? b : 1;
- +}
- +
- +int primitiveSemantics_return_imm_reg_10(int a, int b) {
- + if (a)
- + b = 1;
- + return b;
- +}
- +
- +int primitiveSemantics_return_imm_reg_11(int a, int b) {
- + if (!a)
- + b = 1;
- + return b;
- +}
- +
- +/* { dg-final { scan-assembler-times "czero.eqz" 6 } } */
- +/* { dg-final { scan-assembler-times "czero.nez" 6 } } */
- +/* { dg-final { scan-assembler-not "beq" } } */
- +/* { dg-final { scan-assembler-not "bne" } } */
- diff --git a/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_reg_reg.c b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_reg_reg.c
- new file mode 100644
- index 00000000000..0624b6f16d4
- --- /dev/null
- +++ b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_reg_reg.c
- @@ -0,0 +1,65 @@
- +/* { dg-do compile } */
- +/* { dg-options "-march=rv64gc_zicond -mabi=lp64d" { target { rv64 } } } */
- +/* { dg-options "-march=rv32gc_zicond -mabi=ilp32f" { target { rv32 } } } */
- +/* { dg-skip-if "" { *-*-* } {"-O0" "-Os" "-Og" "-Oz"} } */
- +
- +long primitiveSemantics_return_reg_reg_00(long a, long b, long c) {
- + return a == 0 ? c : b;
- +}
- +
- +long primitiveSemantics_return_reg_reg_01(long a, long b, long c) {
- + return a != 0 ? c : b;
- +}
- +
- +long primitiveSemantics_return_reg_reg_02(long a, long b, long c) {
- + return a == 0 ? b : c;
- +}
- +
- +long primitiveSemantics_return_reg_reg_03(long a, long b, long c) {
- + return a != 0 ? b : c;
- +}
- +
- +long primitiveSemantics_return_reg_reg_04(long a, long b, long c) {
- + if (a)
- + b = c;
- + return b;
- +}
- +
- +long primitiveSemantics_return_reg_reg_05(long a, long b, long c) {
- + if (!a)
- + b = c;
- + return b;
- +}
- +
- +int primitiveSemantics_return_reg_reg_06(int a, int b, int c) {
- + return a == 0 ? c : b;
- +}
- +
- +int primitiveSemantics_return_reg_reg_07(int a, int b, int c) {
- + return a != 0 ? c : b;
- +}
- +
- +int primitiveSemantics_return_reg_reg_08(int a, int b, int c) {
- + return a == 0 ? b : c;
- +}
- +
- +int primitiveSemantics_return_reg_reg_09(int a, int b, int c) {
- + return a != 0 ? b : c;
- +}
- +
- +int primitiveSemantics_return_reg_reg_10(int a, int b, int c) {
- + if (a)
- + b = c;
- + return b;
- +}
- +
- +int primitiveSemantics_return_reg_reg_11(int a, int b, int c) {
- + if (!a)
- + b = c;
- + return b;
- +}
- +
- +/* { dg-final { scan-assembler-times "czero.eqz" 12 } } */
- +/* { dg-final { scan-assembler-times "czero.nez" 12 } } */
- +/* { dg-final { scan-assembler-not "beq" } } */
- +/* { dg-final { scan-assembler-not "bne" } } */
- --
- 2.25.1
|