1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
# mips r6 tests (non FPU)
# mach: mips32r6 mips64r6
# as: -mabi=eabi
# ld: -N -Ttext=0x80010000
# output: *\\npass\\n
.include "testutils.inc"
.include "utils-r6.inc"
setup
.data
dval1: .word 0xabcd1234
dval2: .word 0x1234eeff
.fill 248,1,0
dval3: .word 0x55555555
.fill 260,1,0
dval4: .word 0xaaaaaaaa
.text
.set noreorder
.ent DIAG
DIAG:
writemsg "[1] Test MUL"
r6ck_2r mul, 7, 9, 63
r6ck_2r mul, -7, -9, 63
r6ck_2r mul, 61, -11, -671
r6ck_2r mul, 1001, 1234, 1235234
r6ck_2r mul, 123456789, 999999, 0x7eb1e22b
r6ck_2r mul, 0xaaaabbbb, 0xccccdddd, 0x56787f6f
writemsg "[2] Test MUH"
r6ck_2r muh, 61, -11, 0xffffffff
r6ck_2r muh, 1001, 1234, 0
r6ck_2r muh, 123456789, 999999, 0x7048
r6ck_2r muh, 0xaaaabbbb, 0xccccdddd, 0x111107f7
writemsg "[3] Test MULU"
r6ck_2r mulu, 7, 9, 63
r6ck_2r mulu, -7, -9, 63
r6ck_2r mulu, 61, -11, -671
r6ck_2r mulu, 1001, 1234, 1235234
r6ck_2r mulu, 123456789, 999999, 0x7eb1e22b
r6ck_2r mulu, 0xaaaabbbb, 0xccccdddd, 0x56787f6f
writemsg "[4] Test MUHU"
r6ck_2r muhu, 1001, 1234, 0
r6ck_2r muhu, 123456789, 999999, 0x7048
r6ck_2r muhu, 0xaaaabbbb, 0xccccdddd, 0x8888a18f
r6ck_2r muhu, 0xaaaabbbb, 0xccccdddd, 0x8888a18f
writemsg "[5] Test DIV"
r6ck_2r div, 10001, 10, 1000
r6ck_2r div, -123456, 560, -220
r6ck_2r div, 9, 100, 0
writemsg "[6] Test MOD"
r6ck_2r mod, 10001, 10, 1
r6ck_2r mod, -123456, 560, 0xffffff00
r6ck_2r mod, 9, 100, 9
writemsg "[7] Test DIVU"
r6ck_2r divu, 10001, 10, 1000
r6ck_2r divu, -123456, 560, 0x750674
r6ck_2r divu, 9, 100, 0
r6ck_2r divu, 0xaaaabbbb, 3, 0x38e393e9
writemsg "[8] Test MODU"
r6ck_2r modu, 10001, 10, 1
r6ck_2r modu, -123456, 560, 0
r6ck_2r modu, 9, 100, 9
r6ck_2r modu, 0xaaaabbbb, 5, 4
writemsg "[9] Test LSA"
r6ck_2r1i lsa, 1, 2, 2, 6
r6ck_2r1i lsa, 0x8000, 0xa000, 1, 0x1a000
r6ck_2r1i lsa, 0x82, 0x2000068, 4, 0x2000888
writemsg "[10] Test AUI"
r6ck_1r1i aui, 0x0000c0de, 0xdead, 0xdeadc0de
r6ck_1r1i aui, 0x00005678, 0x1234, 0x12345678
r6ck_1r1i aui, 0x0000eeff, 0xabab, 0xababeeff
writemsg "[11] Test SELEQZ"
r6ck_2r seleqz, 0x1234, 0, 0x1234
r6ck_2r seleqz, 0x1234, 4, 0
r6ck_2r seleqz, 0x80010001, 0, 0x80010001
writemsg "[12] Test SELNEZ"
r6ck_2r selnez, 0x1234, 0, 0
r6ck_2r selnez, 0x1234, 1, 0x1234
r6ck_2r selnez, 0x80010001, 0xffffffff, 0x80010001
writemsg "[13] Test ALIGN"
r6ck_2r1i align, 0xaabbccdd, 0xeeff0011, 1, 0xff0011aa
r6ck_2r1i align, 0xaabbccdd, 0xeeff0011, 3, 0x11aabbcc
writemsg "[14] Test BITSWAP"
r6ck_1r bitswap, 0xaabbccdd, 0x55dd33bb
r6ck_1r bitswap, 0x11884422, 0x88112244
writemsg "[15] Test CLZ"
r6ck_1r clz, 0x00012340, 15
r6ck_1r clz, 0x80012340, 0
r6ck_1r clz, 0x40012340, 1
writemsg "[16] Test CLO"
r6ck_1r clo, 0x00123050, 0
r6ck_1r clo, 0xff123050, 8
r6ck_1r clo, 0x8f123050, 1
writemsg "[17] Test ADDIUPC"
jal GetPC
nop
addiu $4, $6, 8
addiupc $5, 4
fp_assert $4, $5
writemsg "[18] Test AUIPC"
jal GetPC
nop
addiu $4, $6, 8
aui $4, $4, 8
auipc $5, 8
fp_assert $4, $5
writemsg "[19] Test ALUIPC"
jal GetPC
nop
addiu $4, $6, 16
aui $4, $4, 8
li $7, 0xffff0000
and $4, $4, $7
aluipc $5, 8
fp_assert $4, $5
writemsg "[20] Test LWPC"
lw $5, dval1
lwpc $4, dval1
fp_assert $4, $5
lw $5, dval2
lwpc $4, dval2
fp_assert $4, $5
writemsg "[21] Test LL"
lw $5, dval2
la $3, dval3
ll $4, -252($3)
fp_assert $4, $5
writemsg "[22] Test SC"
ll $4, -252($3)
li $4, 0xafaf
sc $4, -252($3)
lw $5, dval2
li $4, 0xafaf
fp_assert $4, $5
pass
.end DIAG
|