diff options
author | Kito Cheng <kito.cheng@sifive.com> | 2019-08-26 02:15:47 +0000 |
---|---|---|
committer | Kito Cheng <kito@gcc.gnu.org> | 2019-08-26 02:15:47 +0000 |
commit | 20e7012b755427d1db00ba6f236583ff3c24e710 (patch) | |
tree | 3b4ed7ea11604a556cf5e2ec2c1eee0179c79055 | |
parent | 900af77fc2cd68e9bc7f5acbc50df44ae97f0a78 (diff) | |
download | gcc-20e7012b755427d1db00ba6f236583ff3c24e710.zip gcc-20e7012b755427d1db00ba6f236583ff3c24e710.tar.gz gcc-20e7012b755427d1db00ba6f236583ff3c24e710.tar.bz2 |
RISC-V: Add testcase for testing li pseudo instruction
gcc/testsuite/ChangeLog:
gcc.target/riscv/li.c: New test.
From-SVN: r274920
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/li.c | 36 |
2 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 08e48c3..dd4d9b7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2019-08-26 Kito Cheng <kito.cheng@sifive.com> + + * gcc.target/riscv/li.c: New test. + 2019-08-24 Nathan Sidwell <nathan@acm.org> * g++.dg/inherit/virtual14.C: New. diff --git a/gcc/testsuite/gcc.target/riscv/li.c b/gcc/testsuite/gcc.target/riscv/li.c new file mode 100644 index 0000000..fa5c02c --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/li.c @@ -0,0 +1,36 @@ +/* { dg-do run } */ +/* { dg-options "-O1" } */ +#include <stdlib.h> +#define LOAD_IMM(var, val) \ + asm ("li %0, %1\n": "=r"(var): "i" (val)) + +#define CHECK_LI(type, val) \ + { \ + type var; \ + LOAD_IMM(var, val); \ + if (var != val) \ + abort(); \ + } + +#define CHECK_LI32(val) CHECK_LI(int, val) +#define CHECK_LI64(val) CHECK_LI(long long, val) + +int main() +{ + CHECK_LI32(0x8001); + CHECK_LI32(0x1f01); + CHECK_LI32(0x12345001); + CHECK_LI32(0xf2345001); +#if __riscv_xlen == 64 + CHECK_LI64(0x8001ll); + CHECK_LI64(0x1f01ll); + CHECK_LI64(0x12345001ll); + CHECK_LI64(0xf2345001ll); + CHECK_LI64(0xf12345001ll); + CHECK_LI64(0xff00ff00ff001f01ll); + CHECK_LI64(0x7ffffffff2345001ll); + CHECK_LI64(0x7f0f243ff2345001ll); + CHECK_LI64(0x1234567887654321ll); +#endif + return 0; +} |