mirror of
https://github.com/rust-lang/rust.git
synced 2025-11-17 09:46:35 +00:00
369 lines
11 KiB
Rust
369 lines
11 KiB
Rust
//! Utility macros.
|
|
|
|
macro_rules! constify_imm8 {
|
|
($imm8:expr, $expand:ident) => {
|
|
#[allow(overflowing_literals)]
|
|
match ($imm8) & 0b1111_1111 {
|
|
0 => $expand!(0),
|
|
1 => $expand!(1),
|
|
2 => $expand!(2),
|
|
3 => $expand!(3),
|
|
4 => $expand!(4),
|
|
5 => $expand!(5),
|
|
6 => $expand!(6),
|
|
7 => $expand!(7),
|
|
8 => $expand!(8),
|
|
9 => $expand!(9),
|
|
10 => $expand!(10),
|
|
11 => $expand!(11),
|
|
12 => $expand!(12),
|
|
13 => $expand!(13),
|
|
14 => $expand!(14),
|
|
15 => $expand!(15),
|
|
16 => $expand!(16),
|
|
17 => $expand!(17),
|
|
18 => $expand!(18),
|
|
19 => $expand!(19),
|
|
20 => $expand!(20),
|
|
21 => $expand!(21),
|
|
22 => $expand!(22),
|
|
23 => $expand!(23),
|
|
24 => $expand!(24),
|
|
25 => $expand!(25),
|
|
26 => $expand!(26),
|
|
27 => $expand!(27),
|
|
28 => $expand!(28),
|
|
29 => $expand!(29),
|
|
30 => $expand!(30),
|
|
31 => $expand!(31),
|
|
32 => $expand!(32),
|
|
33 => $expand!(33),
|
|
34 => $expand!(34),
|
|
35 => $expand!(35),
|
|
36 => $expand!(36),
|
|
37 => $expand!(37),
|
|
38 => $expand!(38),
|
|
39 => $expand!(39),
|
|
40 => $expand!(40),
|
|
41 => $expand!(41),
|
|
42 => $expand!(42),
|
|
43 => $expand!(43),
|
|
44 => $expand!(44),
|
|
45 => $expand!(45),
|
|
46 => $expand!(46),
|
|
47 => $expand!(47),
|
|
48 => $expand!(48),
|
|
49 => $expand!(49),
|
|
50 => $expand!(50),
|
|
51 => $expand!(51),
|
|
52 => $expand!(52),
|
|
53 => $expand!(53),
|
|
54 => $expand!(54),
|
|
55 => $expand!(55),
|
|
56 => $expand!(56),
|
|
57 => $expand!(57),
|
|
58 => $expand!(58),
|
|
59 => $expand!(59),
|
|
60 => $expand!(60),
|
|
61 => $expand!(61),
|
|
62 => $expand!(62),
|
|
63 => $expand!(63),
|
|
64 => $expand!(64),
|
|
65 => $expand!(65),
|
|
66 => $expand!(66),
|
|
67 => $expand!(67),
|
|
68 => $expand!(68),
|
|
69 => $expand!(69),
|
|
70 => $expand!(70),
|
|
71 => $expand!(71),
|
|
72 => $expand!(72),
|
|
73 => $expand!(73),
|
|
74 => $expand!(74),
|
|
75 => $expand!(75),
|
|
76 => $expand!(76),
|
|
77 => $expand!(77),
|
|
78 => $expand!(78),
|
|
79 => $expand!(79),
|
|
80 => $expand!(80),
|
|
81 => $expand!(81),
|
|
82 => $expand!(82),
|
|
83 => $expand!(83),
|
|
84 => $expand!(84),
|
|
85 => $expand!(85),
|
|
86 => $expand!(86),
|
|
87 => $expand!(87),
|
|
88 => $expand!(88),
|
|
89 => $expand!(89),
|
|
90 => $expand!(90),
|
|
91 => $expand!(91),
|
|
92 => $expand!(92),
|
|
93 => $expand!(93),
|
|
94 => $expand!(94),
|
|
95 => $expand!(95),
|
|
96 => $expand!(96),
|
|
97 => $expand!(97),
|
|
98 => $expand!(98),
|
|
99 => $expand!(99),
|
|
100 => $expand!(100),
|
|
101 => $expand!(101),
|
|
102 => $expand!(102),
|
|
103 => $expand!(103),
|
|
104 => $expand!(104),
|
|
105 => $expand!(105),
|
|
106 => $expand!(106),
|
|
107 => $expand!(107),
|
|
108 => $expand!(108),
|
|
109 => $expand!(109),
|
|
110 => $expand!(110),
|
|
111 => $expand!(111),
|
|
112 => $expand!(112),
|
|
113 => $expand!(113),
|
|
114 => $expand!(114),
|
|
115 => $expand!(115),
|
|
116 => $expand!(116),
|
|
117 => $expand!(117),
|
|
118 => $expand!(118),
|
|
119 => $expand!(119),
|
|
120 => $expand!(120),
|
|
121 => $expand!(121),
|
|
122 => $expand!(122),
|
|
123 => $expand!(123),
|
|
124 => $expand!(124),
|
|
125 => $expand!(125),
|
|
126 => $expand!(126),
|
|
127 => $expand!(127),
|
|
128 => $expand!(128),
|
|
129 => $expand!(129),
|
|
130 => $expand!(130),
|
|
131 => $expand!(131),
|
|
132 => $expand!(132),
|
|
133 => $expand!(133),
|
|
134 => $expand!(134),
|
|
135 => $expand!(135),
|
|
136 => $expand!(136),
|
|
137 => $expand!(137),
|
|
138 => $expand!(138),
|
|
139 => $expand!(139),
|
|
140 => $expand!(140),
|
|
141 => $expand!(141),
|
|
142 => $expand!(142),
|
|
143 => $expand!(143),
|
|
144 => $expand!(144),
|
|
145 => $expand!(145),
|
|
146 => $expand!(146),
|
|
147 => $expand!(147),
|
|
148 => $expand!(148),
|
|
149 => $expand!(149),
|
|
150 => $expand!(150),
|
|
151 => $expand!(151),
|
|
152 => $expand!(152),
|
|
153 => $expand!(153),
|
|
154 => $expand!(154),
|
|
155 => $expand!(155),
|
|
156 => $expand!(156),
|
|
157 => $expand!(157),
|
|
158 => $expand!(158),
|
|
159 => $expand!(159),
|
|
160 => $expand!(160),
|
|
161 => $expand!(161),
|
|
162 => $expand!(162),
|
|
163 => $expand!(163),
|
|
164 => $expand!(164),
|
|
165 => $expand!(165),
|
|
166 => $expand!(166),
|
|
167 => $expand!(167),
|
|
168 => $expand!(168),
|
|
169 => $expand!(169),
|
|
170 => $expand!(170),
|
|
171 => $expand!(171),
|
|
172 => $expand!(172),
|
|
173 => $expand!(173),
|
|
174 => $expand!(174),
|
|
175 => $expand!(175),
|
|
176 => $expand!(176),
|
|
177 => $expand!(177),
|
|
178 => $expand!(178),
|
|
179 => $expand!(179),
|
|
180 => $expand!(180),
|
|
181 => $expand!(181),
|
|
182 => $expand!(182),
|
|
183 => $expand!(183),
|
|
184 => $expand!(184),
|
|
185 => $expand!(185),
|
|
186 => $expand!(186),
|
|
187 => $expand!(187),
|
|
188 => $expand!(188),
|
|
189 => $expand!(189),
|
|
190 => $expand!(190),
|
|
191 => $expand!(191),
|
|
192 => $expand!(192),
|
|
193 => $expand!(193),
|
|
194 => $expand!(194),
|
|
195 => $expand!(195),
|
|
196 => $expand!(196),
|
|
197 => $expand!(197),
|
|
198 => $expand!(198),
|
|
199 => $expand!(199),
|
|
200 => $expand!(200),
|
|
201 => $expand!(201),
|
|
202 => $expand!(202),
|
|
203 => $expand!(203),
|
|
204 => $expand!(204),
|
|
205 => $expand!(205),
|
|
206 => $expand!(206),
|
|
207 => $expand!(207),
|
|
208 => $expand!(208),
|
|
209 => $expand!(209),
|
|
210 => $expand!(210),
|
|
211 => $expand!(211),
|
|
212 => $expand!(212),
|
|
213 => $expand!(213),
|
|
214 => $expand!(214),
|
|
215 => $expand!(215),
|
|
216 => $expand!(216),
|
|
217 => $expand!(217),
|
|
218 => $expand!(218),
|
|
219 => $expand!(219),
|
|
220 => $expand!(220),
|
|
221 => $expand!(221),
|
|
222 => $expand!(222),
|
|
223 => $expand!(223),
|
|
224 => $expand!(224),
|
|
225 => $expand!(225),
|
|
226 => $expand!(226),
|
|
227 => $expand!(227),
|
|
228 => $expand!(228),
|
|
229 => $expand!(229),
|
|
230 => $expand!(230),
|
|
231 => $expand!(231),
|
|
232 => $expand!(232),
|
|
233 => $expand!(233),
|
|
234 => $expand!(234),
|
|
235 => $expand!(235),
|
|
236 => $expand!(236),
|
|
237 => $expand!(237),
|
|
238 => $expand!(238),
|
|
239 => $expand!(239),
|
|
240 => $expand!(240),
|
|
241 => $expand!(241),
|
|
242 => $expand!(242),
|
|
243 => $expand!(243),
|
|
244 => $expand!(244),
|
|
245 => $expand!(245),
|
|
246 => $expand!(246),
|
|
247 => $expand!(247),
|
|
248 => $expand!(248),
|
|
249 => $expand!(249),
|
|
250 => $expand!(250),
|
|
251 => $expand!(251),
|
|
252 => $expand!(252),
|
|
253 => $expand!(253),
|
|
254 => $expand!(254),
|
|
_ => $expand!(255),
|
|
}
|
|
};
|
|
}
|
|
|
|
macro_rules! constify_imm6 {
|
|
($imm8:expr, $expand:ident) => {
|
|
#[allow(overflowing_literals)]
|
|
match ($imm8) & 0b1_1111 {
|
|
0 => $expand!(0),
|
|
1 => $expand!(1),
|
|
2 => $expand!(2),
|
|
3 => $expand!(3),
|
|
4 => $expand!(4),
|
|
5 => $expand!(5),
|
|
6 => $expand!(6),
|
|
7 => $expand!(7),
|
|
8 => $expand!(8),
|
|
9 => $expand!(9),
|
|
10 => $expand!(10),
|
|
11 => $expand!(11),
|
|
12 => $expand!(12),
|
|
13 => $expand!(13),
|
|
14 => $expand!(14),
|
|
15 => $expand!(15),
|
|
16 => $expand!(16),
|
|
17 => $expand!(17),
|
|
18 => $expand!(18),
|
|
19 => $expand!(19),
|
|
20 => $expand!(20),
|
|
21 => $expand!(21),
|
|
22 => $expand!(22),
|
|
23 => $expand!(23),
|
|
24 => $expand!(24),
|
|
25 => $expand!(25),
|
|
26 => $expand!(26),
|
|
27 => $expand!(27),
|
|
28 => $expand!(28),
|
|
29 => $expand!(29),
|
|
30 => $expand!(30),
|
|
_ => $expand!(31),
|
|
}
|
|
};
|
|
}
|
|
|
|
macro_rules! constify_imm4 {
|
|
($imm8:expr, $expand:ident) => {
|
|
#[allow(overflowing_literals)]
|
|
match ($imm8) & 0b1111 {
|
|
0 => $expand!(0),
|
|
1 => $expand!(1),
|
|
2 => $expand!(2),
|
|
3 => $expand!(3),
|
|
4 => $expand!(4),
|
|
5 => $expand!(5),
|
|
6 => $expand!(6),
|
|
7 => $expand!(7),
|
|
8 => $expand!(8),
|
|
9 => $expand!(9),
|
|
10 => $expand!(10),
|
|
11 => $expand!(11),
|
|
12 => $expand!(12),
|
|
13 => $expand!(13),
|
|
14 => $expand!(14),
|
|
_ => $expand!(15),
|
|
}
|
|
};
|
|
}
|
|
|
|
macro_rules! constify_imm3 {
|
|
($imm8:expr, $expand:ident) => {
|
|
#[allow(overflowing_literals)]
|
|
match ($imm8) & 0b111 {
|
|
0 => $expand!(0),
|
|
1 => $expand!(1),
|
|
2 => $expand!(2),
|
|
3 => $expand!(3),
|
|
4 => $expand!(4),
|
|
5 => $expand!(5),
|
|
6 => $expand!(6),
|
|
_ => $expand!(7),
|
|
}
|
|
};
|
|
}
|
|
|
|
macro_rules! constify_imm2 {
|
|
($imm8:expr, $expand:ident) => {
|
|
#[allow(overflowing_literals)]
|
|
match ($imm8) & 0b11 {
|
|
0 => $expand!(0),
|
|
1 => $expand!(1),
|
|
2 => $expand!(2),
|
|
_ => $expand!(3),
|
|
}
|
|
};
|
|
}
|
|
|
|
#[cfg(test)]
|
|
macro_rules! assert_approx_eq {
|
|
($a:expr, $b:expr, $eps:expr) => ({
|
|
let (a, b) = (&$a, &$b);
|
|
assert!((*a - *b).abs() < $eps,
|
|
"assertion failed: `(left !== right)` \
|
|
(left: `{:?}`, right: `{:?}`, expect diff: `{:?}`, real diff: `{:?}`)",
|
|
*a, *b, $eps, (*a - *b).abs());
|
|
})
|
|
}
|