Code Review
/
kvmfornfv.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
history
|
raw
|
HEAD
Add qemu 2.4.0
[kvmfornfv.git]
/
qemu
/
tests
/
tcg
/
mips
/
mips32-dsp
/
extr_s_h.c
1
#include<stdio.h>
2
#include<assert.h>
3
4
int main()
5
{
6
int rt, ach, acl, dsp;
7
int result;
8
9
ach = 0x05;
10
acl = 0xB4CB;
11
result = 0x00007FFF;
12
__asm
13
("mthi %2, $ac1\n\t"
14
"mtlo %3, $ac1\n\t"
15
"extr_s.h %0, $ac1, 0x03\n\t"
16
"rddsp %1\n\t"
17
: "=r"(rt), "=r"(dsp)
18
: "r"(ach), "r"(acl)
19
);
20
dsp = (dsp >> 23) & 0x01;
21
assert(dsp == 1);
22
assert(result == rt);
23
24
ach = 0xffffffff;
25
acl = 0x12344321;
26
result = 0xFFFF8000;
27
__asm
28
("mthi %2, $ac1\n\t"
29
"mtlo %3, $ac1\n\t"
30
"extr_s.h %0, $ac1, 0x08\n\t"
31
"rddsp %1\n\t"
32
: "=r"(rt), "=r"(dsp)
33
: "r"(ach), "r"(acl)
34
);
35
dsp = (dsp >> 23) & 0x01;
36
assert(dsp == 1);
37
assert(result == rt);
38
39
/* Clear dsp */
40
dsp = 0;
41
__asm
42
("wrdsp %0\n\t"
43
:
44
: "r"(dsp)
45
);
46
47
ach = 0x00;
48
acl = 0x4321;
49
result = 0x432;
50
__asm
51
("mthi %2, $ac1\n\t"
52
"mtlo %3, $ac1\n\t"
53
"extr_s.h %0, $ac1, 0x04\n\t"
54
"rddsp %1\n\t"
55
: "=r"(rt), "=r"(dsp)
56
: "r"(ach), "r"(acl)
57
);
58
dsp = (dsp >> 23) & 0x01;
59
assert(dsp == 0);
60
assert(result == rt);
61
62
/* Clear dsp */
63
dsp = 0;
64
__asm
65
("wrdsp %0\n\t"
66
:
67
: "r"(dsp)
68
);
69
70
ach = 0x123;
71
acl = 0x87654321;
72
result = 0x1238;
73
__asm
74
("mthi %2, $ac1\n\t"
75
"mtlo %3, $ac1\n\t"
76
"extr_s.h %0, $ac1, 28\n\t"
77
"rddsp %1\n\t"
78
: "=r"(rt), "=r"(dsp)
79
: "r"(ach), "r"(acl)
80
);
81
dsp = (dsp >> 23) & 0x01;
82
assert(dsp == 0);
83
assert(result == rt);
84
85
return 0;
86
}