mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
First stab at the misaligned test.
This commit is contained in:
parent
2241976d29
commit
c061440141
@ -1,24 +1,537 @@
|
||||
00000000
|
||||
00000000
|
||||
00000001
|
||||
00000000
|
||||
ffffffff
|
||||
ffffffff
|
||||
00000001
|
||||
00000000
|
||||
00000002
|
||||
03020100 # ByteDstData
|
||||
07060504
|
||||
0b0a0908
|
||||
0f0e0d0c
|
||||
13021110
|
||||
17161514
|
||||
1b1a1918
|
||||
1f1e1d1c
|
||||
23222120
|
||||
27262524
|
||||
2b2a2928
|
||||
2f2e2d2c
|
||||
33023130
|
||||
37363534
|
||||
3b3a3938
|
||||
3f3e3d3c
|
||||
43424140
|
||||
47464544
|
||||
4b4a4948
|
||||
4f4e4d4c
|
||||
53025150
|
||||
57565554
|
||||
5b5a5958
|
||||
5f5e5d5c
|
||||
63626160
|
||||
67666564
|
||||
6b6a6968
|
||||
6f6e6d6c
|
||||
73027170
|
||||
77767574
|
||||
7b7a7978
|
||||
7f7e7d7c
|
||||
03020100 # Half0DstData
|
||||
07060504
|
||||
0b0a0908
|
||||
0f0e0d0c
|
||||
13021110
|
||||
17161514
|
||||
1b1a1918
|
||||
1f1e1d1c
|
||||
23222120
|
||||
27262524
|
||||
2b2a2928
|
||||
2f2e2d2c
|
||||
33023130
|
||||
37363534
|
||||
3b3a3938
|
||||
3f3e3d3c
|
||||
43424140
|
||||
47464544
|
||||
4b4a4948
|
||||
4f4e4d4c
|
||||
53025150
|
||||
57565554
|
||||
5b5a5958
|
||||
5f5e5d5c
|
||||
63626160
|
||||
67666564
|
||||
6b6a6968
|
||||
6f6e6d6c
|
||||
73027170
|
||||
77767574
|
||||
7b7a7978
|
||||
7f7e7d7c
|
||||
04030201 # Half1DstData
|
||||
08070605
|
||||
0c0b0a09
|
||||
100f0e0d
|
||||
14130211
|
||||
18171615
|
||||
1c1b1a19
|
||||
201f1e1d
|
||||
24232221
|
||||
28272625
|
||||
2c2b2a29
|
||||
302f2e2d
|
||||
34330231
|
||||
38373635
|
||||
3c3b3a39
|
||||
403f3e3d
|
||||
44434241
|
||||
48474645
|
||||
4c4b4a49
|
||||
504f4e4d
|
||||
54530251
|
||||
58575655
|
||||
5c5b5a59
|
||||
605f5e5d
|
||||
64636261
|
||||
68676665
|
||||
6c6b6a69
|
||||
706f6e6d
|
||||
74730271
|
||||
78777675
|
||||
7c7b7a79
|
||||
de7f7e7d
|
||||
03020100 # Word0DstData
|
||||
07060504
|
||||
0b0a0908
|
||||
0f0e0d0c
|
||||
13021110
|
||||
17161514
|
||||
1b1a1918
|
||||
1f1e1d1c
|
||||
23222120
|
||||
27262524
|
||||
2b2a2928
|
||||
2f2e2d2c
|
||||
33023130
|
||||
37363534
|
||||
3b3a3938
|
||||
3f3e3d3c
|
||||
43424140
|
||||
47464544
|
||||
4b4a4948
|
||||
4f4e4d4c
|
||||
53025150
|
||||
57565554
|
||||
5b5a5958
|
||||
5f5e5d5c
|
||||
63626160
|
||||
67666564
|
||||
6b6a6968
|
||||
6f6e6d6c
|
||||
73027170
|
||||
77767574
|
||||
7b7a7978
|
||||
7f7e7d7c
|
||||
04030201 # Word1DstData
|
||||
08070605
|
||||
0c0b0a09
|
||||
100f0e0d
|
||||
14130211
|
||||
18171615
|
||||
1c1b1a19
|
||||
201f1e1d
|
||||
24232221
|
||||
28272625
|
||||
2c2b2a29
|
||||
302f2e2d
|
||||
34330231
|
||||
38373635
|
||||
3c3b3a39
|
||||
403f3e3d
|
||||
44434241
|
||||
48474645
|
||||
4c4b4a49
|
||||
504f4e4d
|
||||
54530251
|
||||
58575655
|
||||
5c5b5a59
|
||||
605f5e5d
|
||||
64636261
|
||||
68676665
|
||||
6c6b6a69
|
||||
706f6e6d
|
||||
74730271
|
||||
78777675
|
||||
7c7b7a79
|
||||
de7f7e7d
|
||||
05040302 # Word2DstData
|
||||
09080706
|
||||
0d0c0b0a
|
||||
11100f0e
|
||||
15141302
|
||||
19181716
|
||||
1d1c1b1a
|
||||
21201f1e
|
||||
25242322
|
||||
29282726
|
||||
2d2c2b2a
|
||||
31302f2e
|
||||
35343302
|
||||
39383736
|
||||
3d3c3b3a
|
||||
41403f3e
|
||||
45444342
|
||||
49484746
|
||||
4d4c4b4a
|
||||
51504f4e
|
||||
55545302
|
||||
59585756
|
||||
5d5c5b5a
|
||||
61605f5e
|
||||
65646362
|
||||
69686766
|
||||
6d6c6b6a
|
||||
71706f6e
|
||||
75747302
|
||||
79787776
|
||||
7d7c7b7a
|
||||
dead7f7e
|
||||
06050403 # Word3DstData
|
||||
0a090807
|
||||
0e0d0c0b
|
||||
0211100f
|
||||
16151413
|
||||
1a191817
|
||||
1e1d1c1b
|
||||
2221201f
|
||||
26252423
|
||||
2a292827
|
||||
2e2d2c2b
|
||||
0231302f
|
||||
36353433
|
||||
3a393837
|
||||
3e3d3c3b
|
||||
4241403f
|
||||
46454443
|
||||
4a494847
|
||||
4e4d4c4b
|
||||
0251504f
|
||||
56555453
|
||||
5a595857
|
||||
5e5d5c5b
|
||||
6261605f
|
||||
66656463
|
||||
6a696867
|
||||
6e6d6c6b
|
||||
0271706f
|
||||
76757473
|
||||
7a797877
|
||||
7e7d7c7b
|
||||
deadbe7f
|
||||
03020100 # Double0DstData
|
||||
07060504
|
||||
0b0a0908
|
||||
0f0e0d0c
|
||||
13021110
|
||||
17161514
|
||||
1b1a1918
|
||||
1f1e1d1c
|
||||
23222120
|
||||
27262524
|
||||
2b2a2928
|
||||
2f2e2d2c
|
||||
33023130
|
||||
37363534
|
||||
3b3a3938
|
||||
3f3e3d3c
|
||||
43424140
|
||||
47464544
|
||||
4b4a4948
|
||||
4f4e4d4c
|
||||
53025150
|
||||
57565554
|
||||
5b5a5958
|
||||
5f5e5d5c
|
||||
63626160
|
||||
67666564
|
||||
6b6a6968
|
||||
6f6e6d6c
|
||||
73027170
|
||||
77767574
|
||||
7b7a7978
|
||||
7f7e7d7c
|
||||
04030201 # Double1DstData
|
||||
08070605
|
||||
0c0b0a09
|
||||
100f0e0d
|
||||
14130211
|
||||
18171615
|
||||
1c1b1a19
|
||||
201f1e1d
|
||||
24232221
|
||||
28272625
|
||||
2c2b2a29
|
||||
302f2e2d
|
||||
34330231
|
||||
38373635
|
||||
3c3b3a39
|
||||
403f3e3d
|
||||
44434241
|
||||
48474645
|
||||
4c4b4a49
|
||||
504f4e4d
|
||||
54530251
|
||||
58575655
|
||||
5c5b5a59
|
||||
605f5e5d
|
||||
64636261
|
||||
68676665
|
||||
6c6b6a69
|
||||
706f6e6d
|
||||
74730271
|
||||
78777675
|
||||
7c7b7a79
|
||||
de7f7e7d
|
||||
05040302 # Double2DstData
|
||||
09080706
|
||||
0d0c0b0a
|
||||
11100f0e
|
||||
15141302
|
||||
19181716
|
||||
1d1c1b1a
|
||||
21201f1e
|
||||
25242322
|
||||
29282726
|
||||
2d2c2b2a
|
||||
31302f2e
|
||||
35343302
|
||||
39383736
|
||||
3d3c3b3a
|
||||
41403f3e
|
||||
45444342
|
||||
49484746
|
||||
4d4c4b4a
|
||||
51504f4e
|
||||
55545302
|
||||
59585756
|
||||
5d5c5b5a
|
||||
61605f5e
|
||||
65646362
|
||||
69686766
|
||||
6d6c6b6a
|
||||
71706f6e
|
||||
75747302
|
||||
79787776
|
||||
7d7c7b7a
|
||||
dead7f7e
|
||||
06050403 # Double3DstData
|
||||
0a090807
|
||||
0e0d0c0b
|
||||
0211100f
|
||||
16151413
|
||||
1a191817
|
||||
1e1d1c1b
|
||||
2221201f
|
||||
26252423
|
||||
2a292827
|
||||
2e2d2c2b
|
||||
0231302f
|
||||
36353433
|
||||
3a393837
|
||||
3e3d3c3b
|
||||
4241403f
|
||||
46454443
|
||||
4a494847
|
||||
4e4d4c4b
|
||||
0251504f
|
||||
56555453
|
||||
5a595857
|
||||
5e5d5c5b
|
||||
6261605f
|
||||
66656463
|
||||
6a696867
|
||||
6e6d6c6b
|
||||
0271706f
|
||||
76757473
|
||||
7a797877
|
||||
7e7d7c7b
|
||||
deadbe7f
|
||||
07060504 # Double4DestData
|
||||
0b0a0908
|
||||
0f0e0d0c
|
||||
13021110
|
||||
17161514
|
||||
1b1a1918
|
||||
1f1e1d1c
|
||||
23222120
|
||||
27262524
|
||||
2b2a2928
|
||||
2f2e2d2c
|
||||
33023130
|
||||
37363534
|
||||
3b3a3938
|
||||
3f3e3d3c
|
||||
43424140
|
||||
47464544
|
||||
4b4a4948
|
||||
4f4e4d4c
|
||||
53025150
|
||||
57565554
|
||||
5b5a5958
|
||||
5f5e5d5c
|
||||
63626160
|
||||
67666564
|
||||
6b6a6968
|
||||
6f6e6d6c
|
||||
73027170
|
||||
77767574
|
||||
7b7a7978
|
||||
7f7e7d7c
|
||||
deadbeef
|
||||
08070605 # Double5DestData
|
||||
0c0b0a09
|
||||
100f0e0d
|
||||
14130211
|
||||
18171615
|
||||
1c1b1a19
|
||||
201f1e1d
|
||||
24232221
|
||||
28272625
|
||||
2c2b2a29
|
||||
302f2e2d
|
||||
34330231
|
||||
38373635
|
||||
3c3b3a39
|
||||
403f3e3d
|
||||
44434241
|
||||
48474645
|
||||
4c4b4a49
|
||||
504f4e4d
|
||||
54530251
|
||||
58575655
|
||||
5c5b5a59
|
||||
605f5e5d
|
||||
64636261
|
||||
68676665
|
||||
6c6b6a69
|
||||
706f6e6d
|
||||
74730271
|
||||
78777675
|
||||
7c7b7a79
|
||||
de7f7e7d
|
||||
deadbeef
|
||||
09080706 # Double6DstData
|
||||
0d0c0b0a
|
||||
11100f0e
|
||||
15141302
|
||||
19181716
|
||||
1d1c1b1a
|
||||
21201f1e
|
||||
25242322
|
||||
29282726
|
||||
2d2c2b2a
|
||||
31302f2e
|
||||
35343302
|
||||
39383736
|
||||
3d3c3b3a
|
||||
41403f3e
|
||||
45444342
|
||||
49484746
|
||||
4d4c4b4a
|
||||
51504f4e
|
||||
55545302
|
||||
59585756
|
||||
5d5c5b5a
|
||||
61605f5e
|
||||
65646362
|
||||
69686766
|
||||
6d6c6b6a
|
||||
71706f6e
|
||||
75747302
|
||||
79787776
|
||||
7d7c7b7a
|
||||
dead7f7e
|
||||
deadbeef
|
||||
0a090807 # Double7DstData
|
||||
0e0d0c0b
|
||||
0211100f
|
||||
16151413
|
||||
1a191817
|
||||
1e1d1c1b
|
||||
2221201f
|
||||
26252423
|
||||
2a292827
|
||||
2e2d2c2b
|
||||
0231302f
|
||||
36353433
|
||||
3a393837
|
||||
3e3d3c3b
|
||||
4241403f
|
||||
46454443
|
||||
4a494847
|
||||
4e4d4c4b
|
||||
0251504f
|
||||
56555453
|
||||
5a595857
|
||||
5e5d5c5b
|
||||
6261605f
|
||||
66656463
|
||||
6a696867
|
||||
6e6d6c6b
|
||||
0271706f
|
||||
76757473
|
||||
7a797877
|
||||
7e7d7c7b
|
||||
deadbe7f
|
||||
deadbeef
|
||||
00000000 #signature
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
ffffffff
|
||||
ffffffff
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
fffffffe
|
||||
ffffffff
|
||||
393cb5d1
|
||||
72ca6f49
|
||||
7b12609b
|
||||
245889d8
|
||||
7f42ac28
|
||||
af17a2d3
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00
|
||||
|
@ -27,113 +27,709 @@ rvtest_entry_point:
|
||||
RVMODEL_BOOT
|
||||
RVTEST_CODE_BEGIN
|
||||
|
||||
RVTEST_SIGBASE( x6, wally_signature)
|
||||
|
||||
RVTEST_CASE(0,"//check ISA:=regex(.*64.*);check ISA:=regex(.*I.*);def TEST_CASE_1=True;def NO_SAIL=True;",ld)
|
||||
|
||||
# Testcase 0: rs1:x18(0x0000000000000000), rs2:x9(0x0000000000000000), result rd:x5(0x0000000000000000)
|
||||
li x18, MASK_XLEN(0x0000000000000000)
|
||||
li x9, MASK_XLEN(0x0000000000000000)
|
||||
SLT x5, x18, x9
|
||||
sd x5, 0(x6)
|
||||
# This test checks the misaligned load and stores work correctly and across D$ line spills.
|
||||
# The general approach is to
|
||||
# 1. load a region of memory using load doubles equal to two cache lines. And copy to a new
|
||||
# region but using stores of bytes, half, word, or doubles. Each are repeated for all possible
|
||||
# misaligned access. Bytes are always aligned, halves are 0, and 1, words are 0, 1, 2, and 3, and
|
||||
# doubles are 0 through 7. Then the new region is compared against the reference region. Because
|
||||
# of the misalignment the last few bytes will not be written so they will be some portion of deadbeef.
|
||||
# The comparison is done using using same abyte, half, word, and double misaligned approach.
|
||||
|
||||
# Testcase 1: rs1:x8(0x0000000000000000), rs2:x25(0x0000000000000001), result rd:x31(0x0000000000000001)
|
||||
li x8, MASK_XLEN(0x0000000000000000)
|
||||
li x25, MASK_XLEN(0x0000000000000001)
|
||||
SLT x31, x8, x25
|
||||
sd x31, 8(x6)
|
||||
la a3, signature # does not get overwritten by any functions
|
||||
|
||||
# Testcase 2: rs1:x16(0x0000000000000000), rs2:x12(0xffffffffffffffff), result rd:x20(0x0000000000000000)
|
||||
li x16, MASK_XLEN(0x0000000000000000)
|
||||
li x12, MASK_XLEN(0xffffffffffffffff)
|
||||
SLT x20, x16, x12
|
||||
sd x20, 16(x6)
|
||||
# byte copy region. always naturally aligned
|
||||
la a0, SourceData
|
||||
la a1, ByteDstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_1
|
||||
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData
|
||||
la a1, ByteDstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData
|
||||
la a1, Half0DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_2
|
||||
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData
|
||||
la a1, Half0DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
# Testcase 3: rs1:x10(0x0000000000000001), rs2:x22(0x0000000000000000), result rd:x12(0x0000000000000000)
|
||||
li x10, MASK_XLEN(0x0000000000000001)
|
||||
li x22, MASK_XLEN(0x0000000000000000)
|
||||
SLT x12, x10, x22
|
||||
sd x12, 24(x6)
|
||||
la a0, SourceData+1
|
||||
la a1, Half1DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_2
|
||||
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData+1
|
||||
la a1, Half1DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData
|
||||
la a1, Word0DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_4
|
||||
|
||||
# Testcase 4: rs1:x19(0x0000000000000001), rs2:x31(0x0000000000000001), result rd:x29(0x0000000000000000)
|
||||
li x19, MASK_XLEN(0x0000000000000001)
|
||||
li x31, MASK_XLEN(0x0000000000000001)
|
||||
SLT x29, x19, x31
|
||||
sd x29, 32(x6)
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData
|
||||
la a1, Word0DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData+1
|
||||
la a1, Word1DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_4
|
||||
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData+1
|
||||
la a1, Word1DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData+2
|
||||
la a1, Word2DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_4
|
||||
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData+2
|
||||
la a1, Word2DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData+3
|
||||
la a1, Word3DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_4
|
||||
|
||||
# Testcase 5: rs1:x21(0x0000000000000001), rs2:x28(0xffffffffffffffff), result rd:x20(0x0000000000000000)
|
||||
li x21, MASK_XLEN(0x0000000000000001)
|
||||
li x28, MASK_XLEN(0xffffffffffffffff)
|
||||
SLT x20, x21, x28
|
||||
sd x20, 40(x6)
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData+3
|
||||
la a1, Word3DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData
|
||||
la a1, Double0DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_8
|
||||
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData
|
||||
la a1, Double0DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData+1
|
||||
la a1, Double1DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_8
|
||||
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData+1
|
||||
la a1, Double1DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData+2
|
||||
la a1, Double2DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_8
|
||||
|
||||
# Testcase 6: rs1:x5(0xffffffffffffffff), rs2:x23(0x0000000000000000), result rd:x10(0x0000000000000001)
|
||||
li x5, MASK_XLEN(0xffffffffffffffff)
|
||||
li x23, MASK_XLEN(0x0000000000000000)
|
||||
SLT x10, x5, x23
|
||||
sd x10, 48(x6)
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData+2
|
||||
la a1, Double2DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData+3
|
||||
la a1, Double3DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_8
|
||||
|
||||
# Testcase 7: rs1:x13(0xffffffffffffffff), rs2:x24(0x0000000000000001), result rd:x14(0x0000000000000001)
|
||||
li x13, MASK_XLEN(0xffffffffffffffff)
|
||||
li x24, MASK_XLEN(0x0000000000000001)
|
||||
SLT x14, x13, x24
|
||||
sd x14, 56(x6)
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData+3
|
||||
la a1, Double3DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData+4
|
||||
la a1, Double4DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_8
|
||||
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData+4
|
||||
la a1, Double4DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData+5
|
||||
la a1, Double5DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_8
|
||||
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData+5
|
||||
la a1, Double5DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData+6
|
||||
la a1, Double6DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_8
|
||||
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData+6
|
||||
la a1, Double6DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
la a0, SourceData+7
|
||||
la a1, Double7DstData
|
||||
li a2, 16
|
||||
jal ra, memcpy8_8
|
||||
|
||||
# Testcase 8: rs1:x27(0xffffffffffffffff), rs2:x21(0xffffffffffffffff), result rd:x3(0x0000000000000000)
|
||||
li x27, MASK_XLEN(0xffffffffffffffff)
|
||||
li x21, MASK_XLEN(0xffffffffffffffff)
|
||||
SLT x3, x27, x21
|
||||
sd x3, 64(x6)
|
||||
# check if the values are write for all sizes and offsets of misaligned loads.
|
||||
la a0, SourceData+7
|
||||
la a1, Double7DstData
|
||||
li a2, 16
|
||||
jal ra, CheckAllWriteSignature
|
||||
|
||||
.type CheckAll, @function
|
||||
# a0 is the SourceData, (golden), a1 is the data to be checked.
|
||||
# a2 is the number of doubles
|
||||
# a3 is the signature pointer
|
||||
# returns a0 as 0 for no mismatch, 1 for mismatch,
|
||||
# returns a3 as incremented signature pointer
|
||||
CheckAllWriteSignature:
|
||||
mv s0, a0
|
||||
mv s1, a1
|
||||
mv s2, a2
|
||||
mv s3, a3
|
||||
# there is no stack so I'm saving ra into s4
|
||||
mv s4, ra
|
||||
|
||||
# Testcase 9: rs1:x8(0x983631890063e42f), rs2:x21(0xb2d650af313b32b7), result rd:x15(0x0000000000000001)
|
||||
li x8, MASK_XLEN(0x983631890063e42f)
|
||||
li x21, MASK_XLEN(0xb2d650af313b32b7)
|
||||
SLT x15, x8, x21
|
||||
sd x15, 72(x6)
|
||||
# check values byte by byte
|
||||
mv a0, s0 # SourceData
|
||||
mv a1, s1 # ie: ByteDstData
|
||||
srli a2, s2, 3 # * 8
|
||||
jal ra, memcmp1
|
||||
sb a0, 0(s3)
|
||||
mv s4, a0
|
||||
|
||||
# Testcase 10: rs1:x19(0xb5d97ef760ef1471), rs2:x28(0xac7c8803e01bbf50), result rd:x14(0x0000000000000000)
|
||||
li x19, MASK_XLEN(0xb5d97ef760ef1471)
|
||||
li x28, MASK_XLEN(0xac7c8803e01bbf50)
|
||||
SLT x14, x19, x28
|
||||
sd x14, 80(x6)
|
||||
# check values half by half
|
||||
mv a0, s0 # SourceData
|
||||
mv a1, s1 # ie: ByteDstData
|
||||
srli a2, s2, 2 # * 4
|
||||
jal ra, memcmp2
|
||||
sb a0, 1(s3)
|
||||
or s4, s4, a0
|
||||
|
||||
# Testcase 11: rs1:x19(0x66faf98908135d58), rs2:x14(0xb3ab1b2cdf26f517), result rd:x25(0x0000000000000000)
|
||||
li x19, MASK_XLEN(0x66faf98908135d58)
|
||||
li x14, MASK_XLEN(0xb3ab1b2cdf26f517)
|
||||
SLT x25, x19, x14
|
||||
sd x25, 88(x6)
|
||||
# check values half by half
|
||||
mv a0, s0 # SourceData
|
||||
addi a1, s1, 1 # ie: ByteDstData+1
|
||||
srli a2, s2, 2 # * 4 -1
|
||||
subi a2, a2, 1
|
||||
jal ra, memcmp2
|
||||
sb a0, 2(s3)
|
||||
or s4, s4, a0
|
||||
|
||||
# check values word by word
|
||||
mv a0, s0 # SourceData
|
||||
mv a1, s1 # ie: ByteDstData
|
||||
srli a2, s2, 1 # * 2
|
||||
jal ra, memcmp4
|
||||
sb a0, 3(s3)
|
||||
or s4, s4, a0
|
||||
|
||||
.EQU NUMTESTS,12
|
||||
# check values word by word
|
||||
mv a0, s0 # SourceData
|
||||
addi a1, s1, 1 # ie: ByteDstData+1
|
||||
srli a2, s2, 1 # * 2 -1
|
||||
subi a2, a2, 1
|
||||
jal ra, memcmp4
|
||||
sb a0, 4(s3)
|
||||
or s4, s4, a0
|
||||
|
||||
# check values word by word
|
||||
mv a0, s0 # SourceData
|
||||
addi a1, s1, 2 # ie: ByteDstData+2
|
||||
srli a2, s2, 1 # * 2 -1
|
||||
subi a2, a2, 1
|
||||
jal ra, memcmp4
|
||||
sb a0, 5(s3)
|
||||
or s4, s4, a0
|
||||
|
||||
# check values word by word
|
||||
mv a0, s0 # SourceData
|
||||
addi a1, s1, 3 # ie: ByteDstData+3
|
||||
srli a2, s2, 1 # * 2 -1
|
||||
subi a2, a2, 1
|
||||
jal ra, memcmp4
|
||||
sb a0, 6(s3)
|
||||
or s4, s4, a0
|
||||
|
||||
# check values double by double
|
||||
mv a0, s0 # SourceData
|
||||
mv a1, s1 # ie: ByteDstData
|
||||
srli a2, s2, 0 # * 1
|
||||
jal ra, memcmp8
|
||||
sb a0, 7(s3)
|
||||
|
||||
# check values double by double
|
||||
mv a0, s0 # SourceData
|
||||
addi a1, s1, 1 # ie: ByteDstData+1
|
||||
srli a2, s2, 0 # * 1 -1
|
||||
subi a2, a2, 1
|
||||
jal ra, memcmp8
|
||||
sb a0, 8(s3)
|
||||
|
||||
# check values double by double
|
||||
mv a0, s0 # SourceData
|
||||
addi a1, s1, 2 # ie: ByteDstData+2
|
||||
srli a2, s2, 0 # * 1 -1
|
||||
subi a2, a2, 1
|
||||
jal ra, memcmp8
|
||||
sb a0, 9(s3)
|
||||
|
||||
# check values double by double
|
||||
mv a0, s0 # SourceData
|
||||
addi a1, s1, 3 # ie: ByteDstData+3
|
||||
srli a2, s2, 0 # * 1 -1
|
||||
subi a2, a2, 1
|
||||
jal ra, memcmp8
|
||||
sb a0, 10(s3)
|
||||
|
||||
# check values double by double
|
||||
mv a0, s0 # SourceData
|
||||
addi a1, s1, 4 # ie: ByteDstData+4
|
||||
srli a2, s2, 0 # * 1 -1
|
||||
subi a2, a2, 1
|
||||
jal ra, memcmp8
|
||||
sb a0, 11(s3)
|
||||
|
||||
# check values double by double
|
||||
mv a0, s0 # SourceData
|
||||
addi a1, s1, 5 # ie: ByteDstData+5
|
||||
srli a2, s2, 0 # * 1 -1
|
||||
subi a2, a2, 1
|
||||
jal ra, memcmp8
|
||||
sb a0, 12(s3)
|
||||
|
||||
# check values double by double
|
||||
mv a0, s0 # SourceData
|
||||
addi a1, s1, 6 # ie: ByteDstData+6
|
||||
srli a2, s2, 0 # * 1 -1
|
||||
subi a2, a2, 1
|
||||
jal ra, memcmp8
|
||||
sb a0, 13(s3)
|
||||
|
||||
# check values double by double
|
||||
mv a0, s0 # SourceData
|
||||
addi a1, s1, 7 # ie: ByteDstData+7
|
||||
srli a2, s2, 0 # * 1
|
||||
subi a2, a2, 1
|
||||
jal ra, memcmp8
|
||||
sb a0, 14(s3)
|
||||
|
||||
addi s3, s3, 15
|
||||
mv a3, s3
|
||||
or a0, s4, a0
|
||||
mv ra, s4
|
||||
ret ra
|
||||
|
||||
|
||||
.type memcmp1, @function
|
||||
# returns which index mismatch, -1 if none
|
||||
memcmp1:
|
||||
# a0 is the source1
|
||||
# a1 is the source2
|
||||
# a2 is the number of 1 byte words
|
||||
mv t0, a0
|
||||
mv t1, a1
|
||||
li t2, 0
|
||||
memcmp1_loop:
|
||||
lbu t3, 0(t0)
|
||||
lbu t4, 0(t1)
|
||||
bne t3, t4, memcmp1_ne
|
||||
addi t0, t0, 1
|
||||
addi t1, t1, 1
|
||||
addi t2, t2, 1
|
||||
blt t2, a2, memcmp1_loop
|
||||
li a0, -1
|
||||
ret
|
||||
memcmp1_ne:
|
||||
mv a0, t2
|
||||
ret
|
||||
|
||||
.type memcmp2, @function
|
||||
# returns which index mismatch, -1 if none
|
||||
memcmp2:
|
||||
# a0 is the source1
|
||||
# a1 is the source2
|
||||
# a2 is the number of 2 byte words
|
||||
mv t0, a0
|
||||
mv t1, a1
|
||||
li t2, 0
|
||||
memcmp2_loop:
|
||||
lhu t3, 0(t0)
|
||||
lhu t4, 0(t1)
|
||||
bne t3, t4, memcmp2_ne
|
||||
addi t0, t0, 2
|
||||
addi t1, t1, 2
|
||||
addi t2, t2, 1
|
||||
blt t2, a2, memcmp2_loop
|
||||
li a0, -1
|
||||
ret
|
||||
memcmp2_ne:
|
||||
mv a0, t2
|
||||
ret
|
||||
|
||||
.type memcmp4, @function
|
||||
# returns which index mismatch, -1 if none
|
||||
memcmp4:
|
||||
# a0 is the source1
|
||||
# a1 is the source2
|
||||
# a2 is the number of 4 byte words
|
||||
mv t0, a0
|
||||
mv t1, a1
|
||||
li t2, 0
|
||||
memcmp4_loop:
|
||||
lwu t3, 0(t0)
|
||||
lwu t4, 0(t1)
|
||||
bne t3, t4, memcmp4_ne
|
||||
addi t0, t0, 4
|
||||
addi t1, t1, 4
|
||||
addi t2, t2, 1
|
||||
blt t2, a2, memcmp4_loop
|
||||
li a0, -1
|
||||
ret
|
||||
memcmp4_ne:
|
||||
mv a0, t2
|
||||
ret
|
||||
|
||||
.type memcmp8, @function
|
||||
# returns which index mismatch, -1 if none
|
||||
memcmp8:
|
||||
# a0 is the source1
|
||||
# a1 is the source2
|
||||
# a2 is the number of 8 byte words
|
||||
mv t0, a0
|
||||
mv t1, a1
|
||||
li t2, 0
|
||||
memcmp8_loop:
|
||||
ld t3, 0(t0)
|
||||
ld t4, 0(t1)
|
||||
bne t3, t4, memcmp8_ne
|
||||
addi t0, t0, 8
|
||||
addi t1, t1, 8
|
||||
addi t2, t2, 1
|
||||
blt t2, a2, memcmp8_loop
|
||||
li a0, -1
|
||||
ret
|
||||
memcmp8_ne:
|
||||
mv a0, t2
|
||||
ret
|
||||
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
.type memcpy8_1, @function
|
||||
# load 8 bytes using load double then store using 8 sb
|
||||
memcpy8_1:
|
||||
# a0 is the source
|
||||
# a1 is the dst
|
||||
# a2 is the number of 8 byte words
|
||||
mv t0, a0
|
||||
mv t1, a1
|
||||
li t2, 0
|
||||
memcpy8_1_loop:
|
||||
ld t3, 0(t0)
|
||||
andi t4, t3, 0xff
|
||||
sb t4, 0(t1)
|
||||
slli t4, t3, 8
|
||||
andi t4, t4, 0xff
|
||||
sb t4, 1(t1)
|
||||
|
||||
slli t4, t3, 16
|
||||
andi t4, t4, 0xff
|
||||
sb t4, 2(t1)
|
||||
|
||||
slli t4, t3, 24
|
||||
andi t4, t4, 0xff
|
||||
sb t4, 3(t1)
|
||||
|
||||
slli t4, t3, 32
|
||||
andi t4, t4, 0xff
|
||||
sb t4, 4(t1)
|
||||
|
||||
slli t4, t3, 40
|
||||
andi t4, t4, 0xff
|
||||
sb t4, 5(t1)
|
||||
|
||||
slli t4, t3, 48
|
||||
andi t4, t4, 0xff
|
||||
sb t4, 6(t1)
|
||||
|
||||
slli t4, t3, 56
|
||||
andi t4, t4, 0xff
|
||||
sb t4, 7(t1)
|
||||
|
||||
addi t0, t0, 8
|
||||
addi t1, t1, 8
|
||||
addi t2, t2, 1
|
||||
blt t2, a2, memcpy8_1_loop
|
||||
ret
|
||||
|
||||
.type memcpy8_2, @function
|
||||
# load 8 bytes using load double then store using 4 sh
|
||||
memcpy8_2:
|
||||
# a0 is the source
|
||||
# a1 is the dst
|
||||
# a2 is the number of 8 byte words
|
||||
mv t0, a0
|
||||
mv t1, a1
|
||||
li t2, 0
|
||||
|
||||
# 16 bit mask
|
||||
lui t4, 0xf
|
||||
ori t4, t4, 0xfff
|
||||
|
||||
memcpy8_2_loop:
|
||||
ld t3, 0(t0)
|
||||
and t4, t4, t3
|
||||
sh t4, 0(t1)
|
||||
|
||||
slli t4, t3, 16
|
||||
and t4, t4, t3
|
||||
sh t4, 2(t1)
|
||||
|
||||
slli t4, t3, 32
|
||||
and t4, t4, t3
|
||||
sh t4, 4(t1)
|
||||
|
||||
slli t4, t3, 48
|
||||
and t4, t4, t3
|
||||
sh t4, 6(t1)
|
||||
|
||||
|
||||
addi t0, t0, 8
|
||||
addi t1, t1, 8
|
||||
addi t2, t2, 1
|
||||
blt t2, a2, memcpy8_2_loop
|
||||
ret
|
||||
|
||||
.type memcpy8_4, @function
|
||||
# load 8 bytes using load double then store using 2 sw
|
||||
memcpy8_4:
|
||||
# a0 is the source
|
||||
# a1 is the dst
|
||||
# a2 is the number of 8 byte words
|
||||
mv t0, a0
|
||||
mv t1, a1
|
||||
li t2, 0
|
||||
|
||||
# 32 bit mask
|
||||
lui t4, 0xffff
|
||||
ori t4, t4, 0xfff
|
||||
|
||||
memcpy8_4_loop:
|
||||
ld t3, 0(t0)
|
||||
and t4, t4, t3
|
||||
sw t4, 0(t1)
|
||||
|
||||
slli t4, t3, 32
|
||||
and t4, t4, t3
|
||||
sw t4, 4(t1)
|
||||
|
||||
addi t0, t0, 8
|
||||
addi t1, t1, 8
|
||||
addi t2, t2, 1
|
||||
blt t2, a2, memcpy8_4_loop
|
||||
ret
|
||||
|
||||
.type memcpy8_8, @function
|
||||
# load 8 bytes using load double then store using 1 sd
|
||||
memcpy8_8:
|
||||
# a0 is the source
|
||||
# a1 is the dst
|
||||
# a2 is the number of 8 byte words
|
||||
mv t0, a0
|
||||
mv t1, a1
|
||||
li t2, 0
|
||||
|
||||
memcpy8_8_loop:
|
||||
ld t3, 0(t0)
|
||||
sd t4, 0(t1)
|
||||
|
||||
addi t0, t0, 8
|
||||
addi t1, t1, 8
|
||||
addi t2, t2, 1
|
||||
blt t2, a2, memcpy8_8_loop
|
||||
ret
|
||||
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
.align 3
|
||||
rvtest_data:
|
||||
.word 0x98765432
|
||||
SourceData:
|
||||
.8byte 0x0706050403020100, 0x0f0e0d0c0b0a0908, 0x1716151413021110, 0x1f1e1d1c1b1a1918
|
||||
.8byte 0x2726252423222120, 0x2f2e2d2c2b2a2928, 0x3736353433023130, 0x3f3e3d3c3b3a3938
|
||||
.8byte 0x4746454443424140, 0x4f4e4d4c4b4a4948, 0x5756555453025150, 0x5f5e5d5c5b5a5958
|
||||
.8byte 0x6766656463626160, 0x6f6e6d6c6b6a6968, 0x7776757473027170, 0x7f7e7d7c7b7a7978
|
||||
.8byte 0xdeadbeefdeadbeef
|
||||
|
||||
Response1ByteOffsetData:
|
||||
.8byte 0x0807060504030201, 0x100f0e0d0c0b0a09, 0x1817161514130211, 0x201f1e1d1c1b1a19
|
||||
.8byte 0x2827262524232221, 0x302f2e2d2c2b2a29, 0x3837363534330231, 0x403f3e3d3c3b3a39
|
||||
.8byte 0x4847464544434241, 0x504f4e4d4c4b4a49, 0x5857565554530251, 0x605f5e5d5c5b5a59
|
||||
.8byte 0x6867666564636261, 0x706f6e6d6c6b6a69, 0x7877767574730271, 0xde7f7e7d7c7b7a79
|
||||
|
||||
Response2ByteOffsetData:
|
||||
.8byte 0x0908070605040302, 0x11100f0e0d0c0b0a, 0x1918171615141302, 0x21201f1e1d1c1b1a
|
||||
.8byte 0x2928272625242322, 0x31302f2e2d2c2b2a, 0x3938373635343302, 0x41403f3e3d3c3b3a
|
||||
.8byte 0x4948474645444342, 0x51504f4e4d4c4b4a, 0x5958575655545302, 0x61605f5e5d5c5b5a
|
||||
.8byte 0x6968676665646362, 0x71706f6e6d6c6b6a, 0x7978777675747302, 0xdead7f7e7d7c7b7a
|
||||
|
||||
Response3ByteOffsetData:
|
||||
.8byte 0x0a09080706050403, 0x0211100f0e0d0c0b, 0x1a19181716151413, 0x2221201f1e1d1c1b
|
||||
.8byte 0x2a29282726252423, 0x0231302f2e2d2c2b, 0x3a39383736353433, 0x4241403f3e3d3c3b
|
||||
.8byte 0x4a49484746454443, 0x0251504f4e4d4c4b, 0x5a59585756555453, 0x6261605f5e5d5c5b
|
||||
.8byte 0x6a69686766656463, 0x0271706f6e6d6c6b, 0x7a79787776757473, 0xdeadbe7f7e7d7c7b
|
||||
|
||||
Response4ByteOffsetData:
|
||||
.8byte 0x0b0a090807060504, 0x130211100f0e0d0c, 0x1b1a191817161514, 0x232221201f1e1d1c
|
||||
.8byte 0x2b2a292827262524, 0x330231302f2e2d2c, 0x3b3a393837363534, 0x434241403f3e3d3c
|
||||
.8byte 0x4b4a494847464544, 0x530251504f4e4d4c, 0x5b5a595857565554, 0x636261605f5e5d5c
|
||||
.8byte 0x6b6a696867666564, 0x730271706f6e6d6c, 0x7b7a797877767574, 0xdeadbeef7f7e7d7c
|
||||
|
||||
Response5ByteOffsetData:
|
||||
.8byte 0x0c0b0a0908070605, 0x14130211100f0e0d, 0x1c1b1a1918171615, 0x24232221201f1e1d
|
||||
.8byte 0x2c2b2a2928272625, 0x34330231302f2e2d, 0x3c3b3a3938373635, 0x44434241403f3e3d
|
||||
.8byte 0x4c4b4a4948474645, 0x54530251504f4e4d, 0x5c5b5a5958575655, 0x64636261605f5e5d
|
||||
.8byte 0x6c6b6a6968676665, 0x74730271706f6e6d, 0x7c7b7a7978777675, 0xdeadbeefde7f7e7d
|
||||
|
||||
Response6ByteOffsetData:
|
||||
.8byte 0x0d0c0b0a09080706, 0x1514130211100f0e, 0x1d1c1b1a19181716, 0x2524232221201f1e
|
||||
.8byte 0x2d2c2b2a29282726, 0x3534330231302f2e, 0x3d3c3b3a39383736, 0x4544434241403f3e
|
||||
.8byte 0x4d4c4b4a49484746, 0x5554530251504f4e, 0x5d5c5b5a59585756, 0x6564636261605f5e
|
||||
.8byte 0x6d6c6b6a69686766, 0x7574730271706f6e, 0x7d7c7b7a79787776, 0xdeadbeefdead7f7e
|
||||
|
||||
Response7ByteOffsetData:
|
||||
.8byte 0x0e0d0c0b0a090807, 0x161514130211100f, 0x1e1d1c1b1a191817, 0x262524232221201f
|
||||
.8byte 0x2e2d2c2b2a292827, 0x363534330231302f, 0x3e3d3c3b3a393837, 0x464544434241403f
|
||||
.8byte 0x4e4d4c4b4a494847, 0x565554530251504f, 0x5e5d5c5b5a595857, 0x666564636261605f
|
||||
.8byte 0x6e6d6c6b6a696867, 0x767574730271706f, 0x7e7d7c7b7a797877, 0xdeadbeefdeadbe7f
|
||||
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
ByteDstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
wally_signature:
|
||||
.fill NUMTESTS*(XLEN/32),4,0xdeadbeef
|
||||
Half0DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
Half1DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
Word0DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
Word1DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
#endif
|
||||
Word2DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
Word3DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
Double0DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
Double1DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
Double2DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
Double3DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
Double4DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
Double5DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
Double6DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
Double7DstData:
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
.8byte 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef, 0xdeadbeefdeadbeef
|
||||
|
||||
signature:
|
||||
.fill 225, 1, 0xff
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SLT.S
|
||||
// David_Harris@hmc.edu & Katherine Parry
|
||||
|
Loading…
Reference in New Issue
Block a user