From 20e7012b755427d1db00ba6f236583ff3c24e710 Mon Sep 17 00:00:00 2001 From: Kito Cheng Date: Mon, 26 Aug 2019 02:15:47 +0000 Subject: [PATCH] RISC-V: Add testcase for testing li pseudo instruction gcc/testsuite/ChangeLog: gcc.target/riscv/li.c: New test. From-SVN: r274920 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.target/riscv/li.c | 36 +++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/li.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 08e48c3e550..dd4d9b7b631 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2019-08-26 Kito Cheng + + * gcc.target/riscv/li.c: New test. + 2019-08-24 Nathan Sidwell * 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 00000000000..fa5c02caee8 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/li.c @@ -0,0 +1,36 @@ +/* { dg-do run } */ +/* { dg-options "-O1" } */ +#include +#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; +} -- 2.30.2