repo.or.cz
/
qemu
/
agraf.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
PPC: Fix rldcl
[qemu/agraf.git]
/
tests
/
tcg
/
mips
/
mips32-dsp
/
extr_s_h.c
blob
9bc2a63cc2d11fa0b4a5323e79ada0f2480b650f
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
}