Skip to content

Commit 1432d8f

Browse files
committed
intrinsic-test: add more values
When SVE vectors start being tested, the test vectors will have length `$max_sve_bits / $ty_bit_length`, which is longer than most existing vector types, so more values are useful.
1 parent c042e18 commit 1432d8f

1 file changed

Lines changed: 182 additions & 87 deletions

File tree

crates/intrinsic-test/src/common/values.rs

Lines changed: 182 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -144,108 +144,203 @@ pub const BIT_PATTERNS_7: &[u8] = &[
144144
];
145145

146146
pub const BIT_PATTERNS_8: &[u8] = &[
147-
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
148-
0xf0, 0x80, 0x3b, 0xff,
147+
0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11,
148+
0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21,
149+
0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
150+
0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41,
151+
0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51,
152+
0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61,
153+
0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71,
154+
0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81,
155+
0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91,
156+
0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1,
157+
0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1,
158+
0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1,
159+
0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1,
160+
0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1,
161+
0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1,
162+
0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
149163
];
150164

165+
#[rustfmt::skip]
151166
pub const BIT_PATTERNS_16: &[u16] = &[
152-
0x0000, // 0.0
153-
0x0400, // The smallest normal value.
154-
0x37ff, // The value just below 0.5.
155-
0x3800, // 0.5
156-
0x3801, // The value just above 0.5.
157-
0x3bff, // The value just below 1.0.
158-
0x3c00, // 1.0
159-
0x3c01, // The value just above 1.0.
160-
0x3e00, // 1.5
161-
0x4900, // 10
162-
0x7bff, // The largest finite value.
163-
0x7c00, // Infinity.
164-
// NaNs.
165-
// - Quiet NaNs
166-
0x7f23, 0x7e00, // - Signalling NaNs
167-
0x7d23, 0x7c01, // Subnormals.
168-
// - A recognisable bit pattern.
169-
0x0012, // - The largest subnormal value.
170-
0x03ff, // - The smallest subnormal value.
171-
0x0001, // The same values again, but negated.
167+
// Simple values:
168+
// 0.0
169+
0x0000,
170+
// The smallest normal value
171+
0x0400,
172+
// The value just below 0.5
173+
0x37ff,
174+
// 0.5
175+
0x3800,
176+
// The value just above 0.5
177+
0x3801,
178+
// The value just below 1.0
179+
0x3bff,
180+
// 1.0
181+
0x3c00,
182+
// The value just above 1.0
183+
0x3c01,
184+
// 1.5
185+
0x3e00,
186+
// 10
187+
0x4900,
188+
// The largest finite value
189+
0x7bff,
190+
// Infinity.
191+
0x7c00,
192+
193+
// NaNs:
194+
// Quiet NaNs
195+
0x7f23,
196+
0x7e00,
197+
// Signalling NaNs
198+
0x7d23,
199+
0x7c01,
200+
201+
// Subnormals:
202+
// A recognisable bit pattern
203+
0x0012,
204+
// The largest subnormal value
205+
0x03ff,
206+
// The smallest subnormal value
207+
0x0001,
208+
209+
// Other values:
210+
// Above values, negated
172211
0x8000, 0x8400, 0xb7ff, 0xb800, 0xb801, 0xbbff, 0xbc00, 0xbc01, 0xbe00, 0xc900, 0xfbff, 0xfc00,
173212
0xff23, 0xfe00, 0xfd23, 0xfc01, 0x8012, 0x83ff, 0x8001,
213+
// Random values
214+
0xfc00, 0xc000, 0x5140, 0x5800, 0x63d2, 0x5630, 0x3560, 0x9191, 0x4178, 0x6212, 0x67d0, 0x3312,
215+
0x4cef, 0x4973, 0x3ecc, 0x5166, 0x4d80, 0x6248, 0x46fd, 0x39c4, 0x39c5, 0x4866, 0x6050, 0x498e,
216+
0x4a0f,
217+
// Previous values in a different order
218+
0x3555, 0xfc00, 0xc000, 0x9191, 0x5140, 0x5800, 0x8001, 0x83ff, 0x63d2, 0x5630, 0x3560, 0x4178,
219+
0x7d23, 0x7c01, 0x0012, 0xb800, 0x03ff, 0x0001, 0x7e00, 0x7f23, 0x8000, 0x8400, 0xb7ff, 0xb801,
220+
0x3312, 0x4cef, 0x4973, 0x39c4, 0x3ecc, 0x5166, 0x67d0, 0x6212, 0x4d80, 0x6248, 0x46fd, 0x39c5,
221+
0xbc01, 0xbe00, 0xc900, 0xfc01, 0xfbff, 0xfc00, 0xbc00, 0xbbff, 0xff23, 0xfe00, 0xfd23, 0x8012,
222+
0x37ff, 0x3800, 0x3801, 0x7bff, 0x3bff, 0x3c00, 0x0400, 0x0000, 0x3c01, 0x3e00, 0x4900, 0x7c00,
223+
0x498e, 0x4a0f, 0x6050, 0x4866,
224+
225+
// Specific values:
226+
// As close to 1/3 as possible.
227+
0x3555,
174228
];
175229

230+
#[rustfmt::skip]
176231
pub const BIT_PATTERNS_32: &[u32] = &[
177-
// Simple values.
178-
0x00000000, // 0.0
179-
0x00800000, // The smallest normal value.
180-
0x3effffff, // The value just below 0.5.
181-
0x3f000000, // 0.5
182-
0x3f000001, // The value just above 0.5.
183-
0x3f7fffff, // The value just below 1.0.
184-
0x3f800000, // 1.0
185-
0x3f800001, // The value just above 1.0.
186-
0x3fc00000, // 1.5
187-
0x41200000, // 10
188-
0x7f8fffff, // The largest finite value.
189-
0x7f800000, // Infinity.
190-
// NaNs.
191-
// - Quiet NaNs
192-
0x7fd23456, 0x7fc00000, // - Signalling NaNs
193-
0x7f923456, 0x7f800001, // Subnormals.
194-
// - A recognisable bit pattern.
195-
0x00123456, // - The largest subnormal value.
196-
0x007fffff, // - The smallest subnormal value.
197-
0x00000001, // The same values again, but negated.
232+
// Simple values:
233+
// 0.0
234+
0x00000000,
235+
// The smallest normal value
236+
0x00800000,
237+
// The value just below 0.5
238+
0x3effffff,
239+
// 0.5
240+
0x3f000000,
241+
// The value just above 0.5
242+
0x3f000001,
243+
// The value just below 1.0
244+
0x3f7fffff,
245+
// 1.0
246+
0x3f800000,
247+
// The value just above 1.0
248+
0x3f800001,
249+
// 1.5
250+
0x3fc00000,
251+
// 10
252+
0x41200000,
253+
// The largest finite value
254+
0x7f8fffff,
255+
// Infinity
256+
0x7f800000,
257+
258+
// NaNs:
259+
// Quiet NaNs
260+
0x7fd23456,
261+
0x7fc00000,
262+
// Signalling NaNs
263+
0x7f923456,
264+
0x7f800001,
265+
266+
// Subnormals:
267+
// A recognisable bit pattern
268+
0x00123456,
269+
// The largest subnormal value
270+
0x007fffff,
271+
// The smallest subnormal value
272+
0x00000001,
273+
274+
// Other values:
275+
// Above values, negated
198276
0x80000000, 0x80800000, 0xbeffffff, 0xbf000000, 0xbf000001, 0xbf7fffff, 0xbf800000, 0xbf800001,
199277
0xbfc00000, 0xc1200000, 0xff8fffff, 0xff800000, 0xffd23456, 0xffc00000, 0xff923456, 0xff800001,
200-
0x80123456, 0x807fffff, 0x80000001,
278+
0x80123456, 0x807fffff, 0x80000001, 0x80123456, 0x807fffff, 0x80000001,
279+
// Random values
280+
0x4205cccd, 0x4229178D, 0x42C6A0C5, 0x3B3302F7, 0x3F9DF45E, 0x41DAA3D7, 0x47C3501D, 0xC3889333,
281+
0xC2C675C3, 0xC69C449A, 0xC341FD71, 0xC502DFD7, 0xBBB43958, 0x3EE24DD3, 0x42B1C28F, 0x42F06666,
282+
0x45D379C3, 0x44637148, 0x3CBBECAB, 0x4113EDFA, 0x444B22F2, 0x1FD93A96, 0x9921055F, 0xFF626925,
283+
284+
// Specific values:
285+
// Approximately Pi
286+
0x40490fdb,
287+
// Approximately 1/3
288+
0x3eaaaaab,
201289
];
202290

291+
#[rustfmt::skip]
203292
pub const BIT_PATTERNS_64: &[u64] = &[
204-
// Simple values.
205-
0x0000000000000000, // 0.0
206-
0x0010000000000000, // The smallest normal value.
207-
0x3fdfffffffffffff, // The value just below 0.5.
208-
0x3fe0000000000000, // 0.5
209-
0x3fe0000000000001, // The value just above 0.5.
210-
0x3fefffffffffffff, // The value just below 1.0.
211-
0x3ff0000000000000, // 1.0
212-
0x3ff0000000000001, // The value just above 1.0.
213-
0x3ff8000000000000, // 1.5
214-
0x4024000000000000, // 10
215-
0x7fefffffffffffff, // The largest finite value.
216-
0x7ff0000000000000, // Infinity.
217-
// NaNs.
218-
// - Quiet NaNs
219-
0x7ff923456789abcd,
220-
0x7ff8000000000000,
221-
// - Signalling NaNs
222-
0x7ff123456789abcd,
293+
// Simple values:
294+
// 0.0
295+
0x0000000000000000,
296+
// The smallest normal value
297+
0x0010000000000000,
298+
// The value just below 0.5
299+
0x3fdfffffffffffff,
300+
// 0.5
301+
0x3fe0000000000000,
302+
// The value just above 0.5
303+
0x3fe0000000000001,
304+
// The value just below 1.0
305+
0x3fefffffffffffff,
306+
// 1.0
307+
0x3ff0000000000000,
308+
// The value just above 1.0
309+
0x3ff0000000000001,
310+
// 1.5
311+
0x3ff8000000000000,
312+
// 10
313+
0x4024000000000000,
314+
// The largest finite value
315+
0x7fefffffffffffff,
316+
// Infinity
223317
0x7ff0000000000000,
224-
// Subnormals.
225-
// - A recognisable bit pattern.
318+
319+
// NaNs:
320+
// Quiet NaNs
321+
0x7ff923456789abcd, 0x7ff8000000000000,
322+
// Signalling NaNs
323+
0x7ff123456789abcd, 0x7ff0000000000000,
324+
325+
// Subnormals:
326+
// A recognisable bit pattern
226327
0x000123456789abcd,
227-
// - The largest subnormal value.
328+
// The largest subnormal value
228329
0x000fffffffffffff,
229-
// - The smallest subnormal value.
330+
// The smallest subnormal value
230331
0x0000000000000001,
231-
// The same values again, but negated.
232-
0x8000000000000000,
233-
0x8010000000000000,
234-
0xbfdfffffffffffff,
235-
0xbfe0000000000000,
236-
0xbfe0000000000001,
237-
0xbfefffffffffffff,
238-
0xbff0000000000000,
239-
0xbff0000000000001,
240-
0xbff8000000000000,
241-
0xc024000000000000,
242-
0xffefffffffffffff,
243-
0xfff0000000000000,
244-
0xfff923456789abcd,
245-
0xfff8000000000000,
246-
0xfff123456789abcd,
247-
0xfff0000000000000,
248-
0x800123456789abcd,
249-
0x800fffffffffffff,
250-
0x8000000000000001,
332+
333+
// Other values:
334+
// Above values, negated
335+
0x8000000000000000, 0x8010000000000000, 0xbfdfffffffffffff, 0xbfe0000000000000,
336+
0xbfe0000000000001, 0xbfefffffffffffff, 0xbff0000000000000, 0xbff0000000000001,
337+
0xbff8000000000000, 0xc024000000000000, 0xffefffffffffffff, 0xfff0000000000000,
338+
0xfff923456789abcd, 0xfff8000000000000, 0xfff123456789abcd, 0xfff0000000000000,
339+
0x800123456789abcd, 0x800fffffffffffff, 0x8000000000000001,
340+
341+
// Specific values:
342+
// Pi
343+
0x400921FB54442D18,
344+
// Approximately 1/3
345+
0x3fd5555555555555,
251346
];

0 commit comments

Comments
 (0)