aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKito Cheng <kito.cheng@sifive.com>2019-08-26 02:15:47 +0000
committerKito Cheng <kito@gcc.gnu.org>2019-08-26 02:15:47 +0000
commit20e7012b755427d1db00ba6f236583ff3c24e710 (patch)
tree3b4ed7ea11604a556cf5e2ec2c1eee0179c79055 /gcc
parent900af77fc2cd68e9bc7f5acbc50df44ae97f0a78 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/riscv/li.c36
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;
+}