@@ -28,8 +28,11 @@ types! {
28
28
/// internal bits differently, check the documentation of the intrinsic
29
29
/// to see how it's being used.
30
30
///
31
- /// The memory layout of this type (*not* the ABI!) is the same as the
32
- /// layout of the corresponding array type(s).
31
+ /// The in-memory representation of this type is the same as the one of an
32
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
33
+ /// there is no padding); however, the alignment is different and equal to
34
+ /// the size of the type. Note that the ABI for function calls may *not* be
35
+ /// the same.
33
36
///
34
37
/// Note that this means that an instance of `__m128i` typically just means
35
38
/// a "bag of bits" which is left up to interpretation at the point of use.
@@ -69,8 +72,11 @@ types! {
69
72
/// of `__m128` always corresponds to `f32x4`, or four `f32` types packed
70
73
/// together.
71
74
///
72
- /// The memory layout of this type (*not* the ABI!) is the same as the
73
- /// layout of the corresponding array type(s).
75
+ /// The in-memory representation of this type is the same as the one of an
76
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
77
+ /// there is no padding); however, the alignment is different and equal to
78
+ /// the size of the type. Note that the ABI for function calls may *not* be
79
+ /// the same.
74
80
///
75
81
/// Most intrinsics using `__m128` are prefixed with `_mm_` and are
76
82
/// suffixed with "ps" (or otherwise contain "ps"). Not to be confused with
@@ -108,8 +114,11 @@ types! {
108
114
/// of `__m128d` always corresponds to `f64x2`, or two `f64` types packed
109
115
/// together.
110
116
///
111
- /// The memory layout of this type (*not* the ABI!) is the same as the
112
- /// layout of the corresponding array type(s).
117
+ /// The in-memory representation of this type is the same as the one of an
118
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
119
+ /// there is no padding); however, the alignment is different and equal to
120
+ /// the size of the type. Note that the ABI for function calls may *not* be
121
+ /// the same.
113
122
///
114
123
/// Most intrinsics using `__m128d` are prefixed with `_mm_` and are
115
124
/// suffixed with "pd" (or otherwise contain "pd"). Not to be confused with
@@ -152,8 +161,11 @@ types! {
152
161
/// internal bits differently, check the documentation of the intrinsic
153
162
/// to see how it's being used.
154
163
///
155
- /// The memory layout of this type (*not* the ABI!) is the same as the
156
- /// layout of the corresponding array type(s).
164
+ /// The in-memory representation of this type is the same as the one of an
165
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
166
+ /// there is no padding); however, the alignment is different and equal to
167
+ /// the size of the type. Note that the ABI for function calls may *not* be
168
+ /// the same.
157
169
///
158
170
/// Note that this means that an instance of `__m256i` typically just means
159
171
/// a "bag of bits" which is left up to interpretation at the point of use.
@@ -190,8 +202,11 @@ types! {
190
202
/// of `__m256` always corresponds to `f32x8`, or eight `f32` types packed
191
203
/// together.
192
204
///
193
- /// The memory layout of this type (*not* the ABI!) is the same as the
194
- /// layout of the corresponding array type(s).
205
+ /// The in-memory representation of this type is the same as the one of an
206
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
207
+ /// there is no padding between two consecutive elements); however, the
208
+ /// alignment is different and equal to the size of the type. Note that the
209
+ /// ABI for function calls may *not* be the same.
195
210
///
196
211
/// Most intrinsics using `__m256` are prefixed with `_mm256_` and are
197
212
/// suffixed with "ps" (or otherwise contain "ps"). Not to be confused with
@@ -229,8 +244,11 @@ types! {
229
244
/// of `__m256d` always corresponds to `f64x4`, or four `f64` types packed
230
245
/// together.
231
246
///
232
- /// The memory layout of this type (*not* the ABI!) is the same as the
233
- /// layout of the corresponding array type(s).
247
+ /// The in-memory representation of this type is the same as the one of an
248
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
249
+ /// there is no padding); however, the alignment is different and equal to
250
+ /// the size of the type. Note that the ABI for function calls may *not* be
251
+ /// the same.
234
252
///
235
253
/// Most intrinsics using `__m256d` are prefixed with `_mm256_` and are
236
254
/// suffixed with "pd" (or otherwise contain "pd"). Not to be confused with
@@ -277,8 +295,11 @@ types! {
277
295
/// internal bits differently, check the documentation of the intrinsic
278
296
/// to see how it's being used.
279
297
///
280
- /// The memory layout of this type (*not* the ABI!) is the same as the
281
- /// layout of the corresponding array type(s).
298
+ /// The in-memory representation of this type is the same as the one of an
299
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
300
+ /// there is no padding); however, the alignment is different and equal to
301
+ /// the size of the type. Note that the ABI for function calls may *not* be
302
+ /// the same.
282
303
///
283
304
/// Note that this means that an instance of `__m512i` typically just means
284
305
/// a "bag of bits" which is left up to interpretation at the point of use.
@@ -296,8 +317,11 @@ types! {
296
317
/// of `__m512` always corresponds to `f32x16`, or sixteen `f32` types
297
318
/// packed together.
298
319
///
299
- /// The memory layout of this type (*not* the ABI!) is the same as the
300
- /// layout of the corresponding array type(s).
320
+ /// The in-memory representation of this type is the same as the one of an
321
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
322
+ /// there is no padding between two consecutive elements); however, the
323
+ /// alignment is different and equal to the size of the type. Note that the
324
+ /// ABI for function calls may *not* be the same.
301
325
///
302
326
/// Most intrinsics using `__m512` are prefixed with `_mm512_` and are
303
327
/// suffixed with "ps" (or otherwise contain "ps"). Not to be confused with
@@ -316,8 +340,11 @@ types! {
316
340
/// of `__m512d` always corresponds to `f64x4`, or eight `f64` types packed
317
341
/// together.
318
342
///
319
- /// The memory layout of this type (*not* the ABI!) is the same as the
320
- /// layout of the corresponding array type(s).
343
+ /// The in-memory representation of this type is the same as the one of an
344
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
345
+ /// there is no padding between two consecutive elements); however, the
346
+ /// alignment is different and equal to the size of the type. Note that the
347
+ /// ABI for function calls may *not* be the same.
321
348
///
322
349
/// Most intrinsics using `__m512d` are prefixed with `_mm512_` and are
323
350
/// suffixed with "pd" (or otherwise contain "pd"). Not to be confused with
@@ -334,8 +361,11 @@ types! {
334
361
/// eight packed `u16` instances. Its purpose is for bf16 related intrinsic
335
362
/// implementations.
336
363
///
337
- /// The memory layout of this type (*not* the ABI!) is the same as the
338
- /// layout of the corresponding array type(s).
364
+ /// The in-memory representation of this type is the same as the one of an
365
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
366
+ /// there is no padding); however, the alignment is different and equal to
367
+ /// the size of the type. Note that the ABI for function calls may *not* be
368
+ /// the same.
339
369
pub struct __m128bh( 8 x u16 ) ;
340
370
341
371
/// 256-bit wide set of 16 `u16` types, x86-specific
@@ -345,8 +375,11 @@ types! {
345
375
/// 16 packed `u16` instances. Its purpose is for bf16 related intrinsic
346
376
/// implementations.
347
377
///
348
- /// The memory layout of this type (*not* the ABI!) is the same as the
349
- /// layout of the corresponding array type(s).
378
+ /// The in-memory representation of this type is the same as the one of an
379
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
380
+ /// there is no padding); however, the alignment is different and equal to
381
+ /// the size of the type. Note that the ABI for function calls may *not* be
382
+ /// the same.
350
383
pub struct __m256bh( 16 x u16 ) ;
351
384
352
385
/// 512-bit wide set of 32 `u16` types, x86-specific
@@ -356,8 +389,11 @@ types! {
356
389
/// 32 packed `u16` instances. Its purpose is for bf16 related intrinsic
357
390
/// implementations.
358
391
///
359
- /// The memory layout of this type (*not* the ABI!) is the same as the
360
- /// layout of the corresponding array type(s).
392
+ /// The in-memory representation of this type is the same as the one of an
393
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
394
+ /// there is no padding); however, the alignment is different and equal to
395
+ /// the size of the type. Note that the ABI for function calls may *not* be
396
+ /// the same.
361
397
pub struct __m512bh( 32 x u16 ) ;
362
398
}
363
399
@@ -371,8 +407,11 @@ types! {
371
407
/// 8 packed `f16` instances. its purpose is for f16 related intrinsic
372
408
/// implementations.
373
409
///
374
- /// The memory layout of this type (*not* the ABI!) is the same as the
375
- /// layout of the corresponding array type(s).
410
+ /// The in-memory representation of this type is the same as the one of an
411
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
412
+ /// there is no padding); however, the alignment is different and equal to
413
+ /// the size of the type. Note that the ABI for function calls may *not* be
414
+ /// the same.
376
415
pub struct __m128h( 8 x f16) ;
377
416
378
417
/// 256-bit wide set of 16 `f16` types, x86-specific
@@ -382,8 +421,11 @@ types! {
382
421
/// 16 packed `f16` instances. its purpose is for f16 related intrinsic
383
422
/// implementations.
384
423
///
385
- /// The memory layout of this type (*not* the ABI!) is the same as the
386
- /// layout of the corresponding array type(s).
424
+ /// The in-memory representation of this type is the same as the one of an
425
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
426
+ /// there is no padding); however, the alignment is different and equal to
427
+ /// the size of the type. Note that the ABI for function calls may *not* be
428
+ /// the same.
387
429
pub struct __m256h( 16 x f16) ;
388
430
389
431
/// 512-bit wide set of 32 `f16` types, x86-specific
@@ -393,8 +435,11 @@ types! {
393
435
/// 32 packed `f16` instances. its purpose is for f16 related intrinsic
394
436
/// implementations.
395
437
///
396
- /// The memory layout of this type (*not* the ABI!) is the same as the
397
- /// layout of the corresponding array type(s).
438
+ /// The in-memory representation of this type is the same as the one of an
439
+ /// equivalent array (i.e. the in-memory order of elements is the same, and
440
+ /// there is no padding); however, the alignment is different and equal to
441
+ /// the size of the type. Note that the ABI for function calls may *not* be
442
+ /// the same.
398
443
pub struct __m512h( 32 x f16) ;
399
444
}
400
445
0 commit comments