redirect c_lwsp / c_swsp to x28
[riscv-tests.git] / isa / rv64uc / sv_c_lwsp.S
index 38dcaa2135ce134ce287e7d9c7374a248b389444..a64220334ce0a4573b7a08f211c7bb255bc68499 100644 (file)
@@ -17,9 +17,43 @@ RVTEST_CODE_BEGIN
   .option push
   .option norvc
 
-        li          a2, 0 
-        li          a3, 0 
-        li          a4, 0 
+        li          a2, 0
+        li          a3, 0
+        li          a4, 0
+
+        SET_SV_MVL(3)
+        SET_SV_2CSRS( SV_REG_CSR(1, 12, 0, 12, 1),
+                      SV_REG_CSR(1, 2, 0, 28, 1) )
+        SET_SV_VL(3)
+
+  # store addr of data in x28 because CSR redirects x2 to x28
+  # and c.lwsp is an element-offset (if isvec=true that is)
+  la x28, data;
+
+  .option push;
+  .option rvc;
+  .align 2;
+  c.lwsp a2, 0(sp); # SP is actually redirected to x28!
+  .option pop
+
+
+        SET_SV_VL(1)
+        CLR_SV_CSRS()
+        SET_SV_MVL(1)
+
+        TEST_SV_IMM(a2, 1001)
+        TEST_SV_IMM(a3, 1002)
+        TEST_SV_IMM(a4, 1005)
+
+  .option pop
+
+  .align 2
+  .option push
+  .option norvc
+
+        li          a2, 0
+        li          a3, 0
+        li          a4, 0
 
         SET_SV_MVL(3)
         SET_SV_2CSRS( SV_REG_CSR(1, 12, 0, 12, 1),
@@ -30,8 +64,8 @@ RVTEST_CODE_BEGIN
   la sp, data;
 
   .option push;
-  .option rvc; 
-  .align 2; 
+  .option rvc;
+  .align 2;
   c.lwsp a2, 0(sp);
   #lw a2, 0(sp);
   .option pop
@@ -43,7 +77,7 @@ RVTEST_CODE_BEGIN
 
   mv sp, a1
 
-        TEST_SV_IMM(a2, 1001) 
+        TEST_SV_IMM(a2, 1001)
         TEST_SV_IMM(a3, 1002)
         TEST_SV_IMM(a4, 1005)