repo.or.cz
/
official-gcc.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
[testsuite] require sqrt_insn effective target where needed
[official-gcc.git]
/
gcc
/
testsuite
/
gcc.target
/
powerpc
/
rlwinm.h
blob
d1220e02207135a4f12b4b2e1ef97a57698ed35d
1
typedef
unsigned int
u32
;
2
3
static
inline
u32
rot
(
u32 x
,
u32 n
,
u32 mb
,
u32 me
)
4
{
5
u32 y
=
x
;
6
7
if
(
n
)
8
x
=
0
9
#ifdef SL
10
| (
x
<<
n
)
11
#endif
12
#ifdef SR
13
| (
x
>> (
32
-
n
))
14
#endif
15
;
16
17
u32 s
= -
1
;
18
if
(
n
)
19
s
=
0
20
#ifdef SL
21
| (
s
<<
n
)
22
#endif
23
#ifdef SR
24
| (
s
>> (
32
-
n
))
25
#endif
26
;
27
28
u32 mask
=
0
;
29
mask
+=
1U
<< (
31
-
mb
);
30
mask
+=
1U
<< (
31
-
mb
);
31
mask
-=
1U
<< (
31
-
me
);
32
mask
-= (
mb
>
me
);
33
34
if
(
mask
& ~
s
)
35
return
12345
*
y
;
36
37
return
x
&
mask
;
38
}
39
40
#define X3(N,B,E) \
41
u32 f_##N##_##B##_##E(u32 x) { return rot(x,N,B,E); } \
42
43
#define X2(N,B) \
44
X3(N,B,0) \
45
X3(N,B,1) \
46
X3(N,B,2) \
47
X3(N,B,7) \
48
X3(N,B,8) \
49
X3(N,B,9) \
50
X3(N,B,15) \
51
X3(N,B,16) \
52
X3(N,B,17) \
53
X3(N,B,23) \
54
X3(N,B,24) \
55
X3(N,B,25) \
56
X3(N,B,29) \
57
X3(N,B,30) \
58
X3(N,B,31)
59
#define X1(N) \
60
X2(N,0) \
61
X2(N,1) \
62
X2(N,2) \
63
X2(N,7) \
64
X2(N,8) \
65
X2(N,9) \
66
X2(N,15) \
67
X2(N,16) \
68
X2(N,17) \
69
X2(N,23) \
70
X2(N,24) \
71
X2(N,25) \
72
X2(N,29) \
73
X2(N,30) \
74
X2(N,31)
75
#define X() \
76
X1(0) \
77
X1(1) \
78
X1(2) \
79
X1(7) \
80
X1(8) \
81
X1(9) \
82
X1(15) \
83
X1(16) \
84
X1(17) \
85
X1(23) \
86
X1(24) \
87
X1(25) \
88
X1(29) \
89
X1(30) \
90
X1(31)
91
92
X
()