From 0ffe59c0b9b88fadc2efcc1a69a8ace30ec6e7b8 Mon Sep 17 00:00:00 2001 From: Jiawei Date: Tue, 2 Sep 2025 07:49:47 -0600 Subject: RISC-V: Update Zba 'shNadd.uw' testcase.` This patch update RISC-V Zba extension 'shNadd.uw' instruction generation. Supplemented the instruction generation detection of 'sh1add.uw' and 'sh3add.uw'. gcc/testsuite/ChangeLog: * gcc.target/riscv/zba-shadd.c: New test functions. --- gcc/testsuite/gcc.target/riscv/zba-shadd.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/testsuite/gcc.target/riscv/zba-shadd.c b/gcc/testsuite/gcc.target/riscv/zba-shadd.c index 61305d3..445ffb2 100644 --- a/gcc/testsuite/gcc.target/riscv/zba-shadd.c +++ b/gcc/testsuite/gcc.target/riscv/zba-shadd.c @@ -1,7 +1,15 @@ /* { dg-do compile } */ /* { dg-options "-O2 -march=rv64gc_zba -mabi=lp64" } */ -unsigned long foo(unsigned int a, unsigned long b) +unsigned long foo1(unsigned int a, unsigned long b) +{ + a = a << 1; + unsigned long c = (unsigned long) a; + unsigned long d = b + (c<<1); + return d; +} + +unsigned long foo2(unsigned int a, unsigned long b) { a = a << 1; unsigned long c = (unsigned long) a; @@ -9,5 +17,15 @@ unsigned long foo(unsigned int a, unsigned long b) return d; } +unsigned long foo3(unsigned int a, unsigned long b) +{ + a = a << 1; + unsigned long c = (unsigned long) a; + unsigned long d = b + (c<<3); + return d; +} + +/* { dg-final { scan-assembler "sh1add.uw" } } */ /* { dg-final { scan-assembler "sh2add.uw" } } */ +/* { dg-final { scan-assembler "sh3add.uw" } } */ /* { dg-final { scan-assembler-not {\mzext} } } */ -- cgit v1.1