mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Progress
This commit is contained in:
parent
5ca428d6a8
commit
4984b3935f
@ -478,60 +478,60 @@ deadbeef
|
|||||||
7e7d7c7b
|
7e7d7c7b
|
||||||
deadbe7f
|
deadbe7f
|
||||||
deadbeef
|
deadbeef
|
||||||
00000000 #signature
|
0fffffff #signature
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00000000
|
ffffffff
|
||||||
00
|
ff
|
||||||
|
@ -40,6 +40,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
|
|
||||||
la a3, signature # does not get overwritten by any functions
|
la a3, signature # does not get overwritten by any functions
|
||||||
|
|
||||||
|
TEST_BYTE:
|
||||||
# byte copy region. always naturally aligned
|
# byte copy region. always naturally aligned
|
||||||
la a0, SourceData
|
la a0, SourceData
|
||||||
la a1, ByteDstData
|
la a1, ByteDstData
|
||||||
@ -52,6 +53,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_HALF0:
|
||||||
la a0, SourceData
|
la a0, SourceData
|
||||||
la a1, Half0DstData
|
la a1, Half0DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -63,6 +65,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_HALF1:
|
||||||
la a0, SourceData+1
|
la a0, SourceData+1
|
||||||
la a1, Half1DstData
|
la a1, Half1DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -74,6 +77,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_WORD0:
|
||||||
la a0, SourceData
|
la a0, SourceData
|
||||||
la a1, Word0DstData
|
la a1, Word0DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -85,6 +89,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_WORD1:
|
||||||
la a0, SourceData+1
|
la a0, SourceData+1
|
||||||
la a1, Word1DstData
|
la a1, Word1DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -96,6 +101,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_WORD2:
|
||||||
la a0, SourceData+2
|
la a0, SourceData+2
|
||||||
la a1, Word2DstData
|
la a1, Word2DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -107,6 +113,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_WORD3:
|
||||||
la a0, SourceData+3
|
la a0, SourceData+3
|
||||||
la a1, Word3DstData
|
la a1, Word3DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -118,6 +125,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_DOUBLE0:
|
||||||
la a0, SourceData
|
la a0, SourceData
|
||||||
la a1, Double0DstData
|
la a1, Double0DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -129,6 +137,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_DOUBLE1:
|
||||||
la a0, SourceData+1
|
la a0, SourceData+1
|
||||||
la a1, Double1DstData
|
la a1, Double1DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -140,6 +149,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_DOUBLE2:
|
||||||
la a0, SourceData+2
|
la a0, SourceData+2
|
||||||
la a1, Double2DstData
|
la a1, Double2DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -151,6 +161,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_DOUBLE3:
|
||||||
la a0, SourceData+3
|
la a0, SourceData+3
|
||||||
la a1, Double3DstData
|
la a1, Double3DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -162,6 +173,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_DOUBLE4:
|
||||||
la a0, SourceData+4
|
la a0, SourceData+4
|
||||||
la a1, Double4DstData
|
la a1, Double4DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -173,6 +185,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_DOUBLE5:
|
||||||
la a0, SourceData+5
|
la a0, SourceData+5
|
||||||
la a1, Double5DstData
|
la a1, Double5DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -184,6 +197,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_DOUBLE6:
|
||||||
la a0, SourceData+6
|
la a0, SourceData+6
|
||||||
la a1, Double6DstData
|
la a1, Double6DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -195,6 +209,7 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
TEST_DOUBLE7:
|
||||||
la a0, SourceData+7
|
la a0, SourceData+7
|
||||||
la a1, Double7DstData
|
la a1, Double7DstData
|
||||||
li a2, 16
|
li a2, 16
|
||||||
@ -206,6 +221,8 @@ RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_
|
|||||||
li a2, 16
|
li a2, 16
|
||||||
jal ra, CheckAllWriteSignature
|
jal ra, CheckAllWriteSignature
|
||||||
|
|
||||||
|
RVMODEL_HALT
|
||||||
|
|
||||||
.type CheckAll, @function
|
.type CheckAll, @function
|
||||||
# a0 is the SourceData, (golden), a1 is the data to be checked.
|
# a0 is the SourceData, (golden), a1 is the data to be checked.
|
||||||
# a2 is the number of doubles
|
# a2 is the number of doubles
|
||||||
@ -217,13 +234,13 @@ CheckAllWriteSignature:
|
|||||||
mv s1, a1
|
mv s1, a1
|
||||||
mv s2, a2
|
mv s2, a2
|
||||||
mv s3, a3
|
mv s3, a3
|
||||||
# there is no stack so I'm saving ra into s4
|
# there is no stack so I'm saving ra into s5
|
||||||
mv s4, ra
|
mv s5, ra
|
||||||
|
|
||||||
# check values byte by byte
|
# check values byte by byte
|
||||||
mv a0, s0 # SourceData
|
mv a0, s0 # SourceData
|
||||||
mv a1, s1 # ie: ByteDstData
|
mv a1, s1 # ie: ByteDstData
|
||||||
srli a2, s2, 3 # * 8
|
slli a2, s2, 3 # * 8
|
||||||
jal ra, memcmp1
|
jal ra, memcmp1
|
||||||
sb a0, 0(s3)
|
sb a0, 0(s3)
|
||||||
mv s4, a0
|
mv s4, a0
|
||||||
@ -231,50 +248,50 @@ CheckAllWriteSignature:
|
|||||||
# check values half by half
|
# check values half by half
|
||||||
mv a0, s0 # SourceData
|
mv a0, s0 # SourceData
|
||||||
mv a1, s1 # ie: ByteDstData
|
mv a1, s1 # ie: ByteDstData
|
||||||
srli a2, s2, 2 # * 4
|
slli a2, s2, 2 # * 4
|
||||||
jal ra, memcmp2
|
jal ra, memcmp2
|
||||||
sb a0, 1(s3)
|
sb a0, 1(s3)
|
||||||
or s4, s4, a0
|
or s4, s4, a0
|
||||||
|
|
||||||
# check values half by half
|
# check values half by half
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 1 # SourceData+1
|
||||||
addi a1, s1, 1 # ie: ByteDstData+1
|
addi a1, s1, 0 # ie: ByteDstData
|
||||||
srli a2, s2, 2 # * 4 -1
|
slli a2, s2, 2 # * 4 -1
|
||||||
addi a2, a2, -1
|
addi a2, a2, -1
|
||||||
jal ra, memcmp2
|
jal ra, memcmp2
|
||||||
sb a0, 2(s3)
|
sb a0, 2(s3)
|
||||||
or s4, s4, a0
|
or s4, s4, a0
|
||||||
|
|
||||||
# check values word by word
|
# check values word by word
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 0 # SourceData
|
||||||
mv a1, s1 # ie: ByteDstData
|
mv a1, s1 # ie: ByteDstData
|
||||||
srli a2, s2, 1 # * 2
|
slli a2, s2, 1 # * 2
|
||||||
jal ra, memcmp4
|
jal ra, memcmp4
|
||||||
sb a0, 3(s3)
|
sb a0, 3(s3)
|
||||||
or s4, s4, a0
|
or s4, s4, a0
|
||||||
|
|
||||||
# check values word by word
|
# check values word by word
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 1 # SourceData+1
|
||||||
addi a1, s1, 1 # ie: ByteDstData+1
|
addi a1, s1, 0 # ie: ByteDstData
|
||||||
srli a2, s2, 1 # * 2 -1
|
slli a2, s2, 1 # * 2 -1
|
||||||
addi a2, a2, -1
|
addi a2, a2, -1
|
||||||
jal ra, memcmp4
|
jal ra, memcmp4
|
||||||
sb a0, 4(s3)
|
sb a0, 4(s3)
|
||||||
or s4, s4, a0
|
or s4, s4, a0
|
||||||
|
|
||||||
# check values word by word
|
# check values word by word
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 2 # SourceData+2
|
||||||
addi a1, s1, 2 # ie: ByteDstData+2
|
addi a1, s1, 0 # ie: ByteDstData
|
||||||
srli a2, s2, 1 # * 2 -1
|
slli a2, s2, 1 # * 2 -1
|
||||||
addi a2, a2, -1
|
addi a2, a2, -1
|
||||||
jal ra, memcmp4
|
jal ra, memcmp4
|
||||||
sb a0, 5(s3)
|
sb a0, 5(s3)
|
||||||
or s4, s4, a0
|
or s4, s4, a0
|
||||||
|
|
||||||
# check values word by word
|
# check values word by word
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 3 # SourceData+3
|
||||||
addi a1, s1, 3 # ie: ByteDstData+3
|
addi a1, s1, 0 # ie: ByteDstData
|
||||||
srli a2, s2, 1 # * 2 -1
|
slli a2, s2, 1 # * 2 -1
|
||||||
addi a2, a2, -1
|
addi a2, a2, -1
|
||||||
jal ra, memcmp4
|
jal ra, memcmp4
|
||||||
sb a0, 6(s3)
|
sb a0, 6(s3)
|
||||||
@ -283,62 +300,62 @@ CheckAllWriteSignature:
|
|||||||
# check values double by double
|
# check values double by double
|
||||||
mv a0, s0 # SourceData
|
mv a0, s0 # SourceData
|
||||||
mv a1, s1 # ie: ByteDstData
|
mv a1, s1 # ie: ByteDstData
|
||||||
srli a2, s2, 0 # * 1
|
slli a2, s2, 0 # * 1
|
||||||
jal ra, memcmp8
|
jal ra, memcmp8
|
||||||
sb a0, 7(s3)
|
sb a0, 7(s3)
|
||||||
|
|
||||||
# check values double by double
|
# check values double by double
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 1 # SourceData+1
|
||||||
addi a1, s1, 1 # ie: ByteDstData+1
|
addi a1, s1, 0 # ie: ByteDstData
|
||||||
srli a2, s2, 0 # * 1 -1
|
slli a2, s2, 0 # * 1 -1
|
||||||
addi a2, a2, -1
|
addi a2, a2, -1
|
||||||
jal ra, memcmp8
|
jal ra, memcmp8
|
||||||
sb a0, 8(s3)
|
sb a0, 8(s3)
|
||||||
|
|
||||||
# check values double by double
|
# check values double by double
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 2 # SourceData+2
|
||||||
addi a1, s1, 2 # ie: ByteDstData+2
|
addi a1, s1, 0 # ie: ByteDstData
|
||||||
srli a2, s2, 0 # * 1 -1
|
slli a2, s2, 0 # * 1 -1
|
||||||
addi a2, a2, -1
|
addi a2, a2, -1
|
||||||
jal ra, memcmp8
|
jal ra, memcmp8
|
||||||
sb a0, 9(s3)
|
sb a0, 9(s3)
|
||||||
|
|
||||||
# check values double by double
|
# check values double by double
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 3 # SourceData+3
|
||||||
addi a1, s1, 3 # ie: ByteDstData+3
|
addi a1, s1, 2 # ie: ByteDstData
|
||||||
srli a2, s2, 0 # * 1 -1
|
slli a2, s2, 0 # * 1 -1
|
||||||
addi a2, a2, -1
|
addi a2, a2, -1
|
||||||
jal ra, memcmp8
|
jal ra, memcmp8
|
||||||
sb a0, 10(s3)
|
sb a0, 10(s3)
|
||||||
|
|
||||||
# check values double by double
|
# check values double by double
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 4 # SourceData+4
|
||||||
addi a1, s1, 4 # ie: ByteDstData+4
|
addi a1, s1, 0 # ie: ByteDstData
|
||||||
srli a2, s2, 0 # * 1 -1
|
slli a2, s2, 0 # * 1 -1
|
||||||
addi a2, a2, -1
|
addi a2, a2, -1
|
||||||
jal ra, memcmp8
|
jal ra, memcmp8
|
||||||
sb a0, 11(s3)
|
sb a0, 11(s3)
|
||||||
|
|
||||||
# check values double by double
|
# check values double by double
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 5 # SourceData+5
|
||||||
addi a1, s1, 5 # ie: ByteDstData+5
|
addi a1, s1, 0 # ie: ByteDstData
|
||||||
srli a2, s2, 0 # * 1 -1
|
slli a2, s2, 0 # * 1 -1
|
||||||
addi a2, a2, -1
|
addi a2, a2, -1
|
||||||
jal ra, memcmp8
|
jal ra, memcmp8
|
||||||
sb a0, 12(s3)
|
sb a0, 12(s3)
|
||||||
|
|
||||||
# check values double by double
|
# check values double by double
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 6 # SourceData+6
|
||||||
addi a1, s1, 6 # ie: ByteDstData+6
|
addi a1, s1, 0 # ie: ByteDstData
|
||||||
srli a2, s2, 0 # * 1 -1
|
slli a2, s2, 0 # * 1 -1
|
||||||
addi a2, a2, -1
|
addi a2, a2, -1
|
||||||
jal ra, memcmp8
|
jal ra, memcmp8
|
||||||
sb a0, 13(s3)
|
sb a0, 13(s3)
|
||||||
|
|
||||||
# check values double by double
|
# check values double by double
|
||||||
mv a0, s0 # SourceData
|
addi a0, s0, 7 # SourceData+7
|
||||||
addi a1, s1, 7 # ie: ByteDstData+7
|
addi a1, s1, 0 # ie: ByteDstData
|
||||||
srli a2, s2, 0 # * 1
|
slli a2, s2, 0 # * 1
|
||||||
addi a2, a2, -1
|
addi a2, a2, -1
|
||||||
jal ra, memcmp8
|
jal ra, memcmp8
|
||||||
sb a0, 14(s3)
|
sb a0, 14(s3)
|
||||||
@ -346,7 +363,7 @@ CheckAllWriteSignature:
|
|||||||
addi s3, s3, 15
|
addi s3, s3, 15
|
||||||
mv a3, s3
|
mv a3, s3
|
||||||
or a0, s4, a0
|
or a0, s4, a0
|
||||||
mv ra, s4
|
mv ra, s5
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
@ -444,7 +461,6 @@ memcmp8_ne:
|
|||||||
|
|
||||||
|
|
||||||
RVTEST_CODE_END
|
RVTEST_CODE_END
|
||||||
RVMODEL_HALT
|
|
||||||
|
|
||||||
.type memcpy8_1, @function
|
.type memcpy8_1, @function
|
||||||
# load 8 bytes using load double then store using 8 sb
|
# load 8 bytes using load double then store using 8 sb
|
||||||
@ -459,31 +475,31 @@ memcpy8_1_loop:
|
|||||||
ld t3, 0(t0)
|
ld t3, 0(t0)
|
||||||
andi t4, t3, 0xff
|
andi t4, t3, 0xff
|
||||||
sb t4, 0(t1)
|
sb t4, 0(t1)
|
||||||
slli t4, t3, 8
|
srli t4, t3, 8
|
||||||
andi t4, t4, 0xff
|
andi t4, t4, 0xff
|
||||||
sb t4, 1(t1)
|
sb t4, 1(t1)
|
||||||
|
|
||||||
slli t4, t3, 16
|
srli t4, t3, 16
|
||||||
andi t4, t4, 0xff
|
andi t4, t4, 0xff
|
||||||
sb t4, 2(t1)
|
sb t4, 2(t1)
|
||||||
|
|
||||||
slli t4, t3, 24
|
srli t4, t3, 24
|
||||||
andi t4, t4, 0xff
|
andi t4, t4, 0xff
|
||||||
sb t4, 3(t1)
|
sb t4, 3(t1)
|
||||||
|
|
||||||
slli t4, t3, 32
|
srli t4, t3, 32
|
||||||
andi t4, t4, 0xff
|
andi t4, t4, 0xff
|
||||||
sb t4, 4(t1)
|
sb t4, 4(t1)
|
||||||
|
|
||||||
slli t4, t3, 40
|
srli t4, t3, 40
|
||||||
andi t4, t4, 0xff
|
andi t4, t4, 0xff
|
||||||
sb t4, 5(t1)
|
sb t4, 5(t1)
|
||||||
|
|
||||||
slli t4, t3, 48
|
srli t4, t3, 48
|
||||||
andi t4, t4, 0xff
|
andi t4, t4, 0xff
|
||||||
sb t4, 6(t1)
|
sb t4, 6(t1)
|
||||||
|
|
||||||
slli t4, t3, 56
|
srli t4, t3, 56
|
||||||
andi t4, t4, 0xff
|
andi t4, t4, 0xff
|
||||||
sb t4, 7(t1)
|
sb t4, 7(t1)
|
||||||
|
|
||||||
@ -506,23 +522,23 @@ memcpy8_2:
|
|||||||
# 16 bit mask
|
# 16 bit mask
|
||||||
lui t4, 0xf
|
lui t4, 0xf
|
||||||
li t3, 0xfff
|
li t3, 0xfff
|
||||||
or t4, t4, t3
|
or t5, t4, t3
|
||||||
|
|
||||||
memcpy8_2_loop:
|
memcpy8_2_loop:
|
||||||
ld t3, 0(t0)
|
ld t3, 0(t0)
|
||||||
and t4, t4, t3
|
and t4, t3, t5
|
||||||
sh t4, 0(t1)
|
sh t4, 0(t1)
|
||||||
|
|
||||||
slli t4, t3, 16
|
srli t4, t3, 16
|
||||||
and t4, t4, t3
|
and t4, t4, t5
|
||||||
sh t4, 2(t1)
|
sh t4, 2(t1)
|
||||||
|
|
||||||
slli t4, t3, 32
|
srli t4, t3, 32
|
||||||
and t4, t4, t3
|
and t4, t4, t5
|
||||||
sh t4, 4(t1)
|
sh t4, 4(t1)
|
||||||
|
|
||||||
slli t4, t3, 48
|
srli t4, t3, 48
|
||||||
and t4, t4, t3
|
and t4, t4, t5
|
||||||
sh t4, 6(t1)
|
sh t4, 6(t1)
|
||||||
|
|
||||||
|
|
||||||
@ -545,15 +561,15 @@ memcpy8_4:
|
|||||||
# 32 bit mask
|
# 32 bit mask
|
||||||
lui t4, 0xffff
|
lui t4, 0xffff
|
||||||
li t3, 0xfff
|
li t3, 0xfff
|
||||||
or t4, t4, t3
|
or t5, t4, t3
|
||||||
|
|
||||||
memcpy8_4_loop:
|
memcpy8_4_loop:
|
||||||
ld t3, 0(t0)
|
ld t3, 0(t0)
|
||||||
and t4, t4, t3
|
and t4, t3, t5
|
||||||
sw t4, 0(t1)
|
sw t4, 0(t1)
|
||||||
|
|
||||||
slli t4, t3, 32
|
srli t4, t3, 32
|
||||||
and t4, t4, t3
|
and t4, t4, t5
|
||||||
sw t4, 4(t1)
|
sw t4, 4(t1)
|
||||||
|
|
||||||
addi t0, t0, 8
|
addi t0, t0, 8
|
||||||
@ -730,7 +746,7 @@ Double7DstData:
|
|||||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||||
|
|
||||||
signature:
|
signature:
|
||||||
.fill 225, 1, 0xff
|
.fill 225, 1, 0x00
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SLT.S
|
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SLT.S
|
||||||
|
Loading…
Reference in New Issue
Block a user