diff options
author | Yuriy Kolerov <Yuriy.Kolerov@synopsys.com> | 2025-03-01 08:35:55 -0700 |
---|---|---|
committer | Jeff Law <jlaw@ventanamicro.com> | 2025-03-01 08:36:30 -0700 |
commit | a0d29dd218e7d96f0715360a2ab6fdd8dc9b3446 (patch) | |
tree | 2fdf27fedc4de7b15e31a69000a5ea1cba9bd166 | |
parent | 898f22d15805229a932fff7f22a0a8054e1b9b31 (diff) | |
download | gcc-a0d29dd218e7d96f0715360a2ab6fdd8dc9b3446.zip gcc-a0d29dd218e7d96f0715360a2ab6fdd8dc9b3446.tar.gz gcc-a0d29dd218e7d96f0715360a2ab6fdd8dc9b3446.tar.bz2 |
[PR target/118906] [PATCH v2] RISC-V: Fix a typo in zce to zcf implication
zce must imply zcf but this rule was corrupted after
refactoring in 9e12010b5e724277ea. This may be observed
ater generating an .s file from any source code file with
-mriscv-attribute -march=rv32if_zce -mabi=ilp32 -S
options. A full march will be presented in arch attribute:
rv32i2p1_f2p2_zicsr2p0_zca1p0_zcb1p0_zce1p0_zcmp1p0_zcmt1p0
As you see, zcf is not presented here though f_zce pair is
passed in -march. According to The RISC-V Instruction
Set Manual:
Specifying Zce on RV32 with F includes Zca, Zcb, Zcmp,
Zcmt and Zcf.
PR target/118906
gcc/ChangeLog:
* common/config/riscv/riscv-common.cc: fix zce to zcf
implication.
gcc/testsuite/ChangeLog:
* gcc.target/riscv/attribute-zce-1.c: New test.
* gcc.target/riscv/attribute-zce-2.c: New test.
* gcc.target/riscv/attribute-zce-3.c: New test.
* gcc.target/riscv/attribute-zce-4.c: New test.
-rw-r--r-- | gcc/common/config/riscv/riscv-common.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/attribute-zce-1.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/attribute-zce-2.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/attribute-zce-3.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/attribute-zce-4.c | 6 |
5 files changed, 25 insertions, 1 deletions
diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc index 5038f0e..b34409a 100644 --- a/gcc/common/config/riscv/riscv-common.cc +++ b/gcc/common/config/riscv/riscv-common.cc @@ -213,7 +213,7 @@ static const riscv_implied_info_t riscv_implied_info[] = {"zcmp", "zca"}, {"zcmt", "zca"}, {"zcmt", "zicsr"}, - {"zcf", "f", + {"zce", "zcf", [] (const riscv_subset_list *subset_list) -> bool { return subset_list->xlen () == 32 && subset_list->lookup ("f"); diff --git a/gcc/testsuite/gcc.target/riscv/attribute-zce-1.c b/gcc/testsuite/gcc.target/riscv/attribute-zce-1.c new file mode 100644 index 0000000..e477414 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/attribute-zce-1.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-mriscv-attribute -march=rv32i_zce -mabi=ilp32" } */ + +void foo(){} + +/* { dg-final { scan-assembler ".attribute arch, \"rv32i2p1_zicsr2p0_zca1p0_zcb1p0_zce1p0_zcmp1p0_zcmt1p0\"" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/attribute-zce-2.c b/gcc/testsuite/gcc.target/riscv/attribute-zce-2.c new file mode 100644 index 0000000..7008eb5 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/attribute-zce-2.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-mriscv-attribute -march=rv32if_zce -mabi=ilp32" } */ + +void foo(){} + +/* { dg-final { scan-assembler ".attribute arch, \"rv32i2p1_f2p2_zicsr2p0_zca1p0_zcb1p0_zce1p0_zcf1p0_zcmp1p0_zcmt1p0\"" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/attribute-zce-3.c b/gcc/testsuite/gcc.target/riscv/attribute-zce-3.c new file mode 100644 index 0000000..89ebaaf --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/attribute-zce-3.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-mriscv-attribute -march=rv64i_zce -mabi=lp64" } */ + +void foo(){} + +/* { dg-final { scan-assembler ".attribute arch, \"rv64i2p1_zicsr2p0_zca1p0_zcb1p0_zce1p0_zcmp1p0_zcmt1p0\"" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/attribute-zce-4.c b/gcc/testsuite/gcc.target/riscv/attribute-zce-4.c new file mode 100644 index 0000000..cacbcaa --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/attribute-zce-4.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-mriscv-attribute -march=rv64if_zce -mabi=lp64" } */ + +void foo(){} + +/* { dg-final { scan-assembler ".attribute arch, \"rv64i2p1_f2p2_zicsr2p0_zca1p0_zcb1p0_zce1p0_zcmp1p0_zcmt1p0\"" } } */ |