@@ -83,7 +83,9 @@ impl_element! { isize }
83
83
///
84
84
/// Masks represent boolean inclusion/exclusion on a per-lane basis.
85
85
///
86
- /// The layout of this type is unspecified.
86
+ /// The layout of this type is unspecified, and may change between platforms
87
+ /// and/or Rust versions, and code should not assume that it is equivalent to
88
+ /// `[T; LANES]`.
87
89
#[ repr( transparent) ]
88
90
pub struct Mask < T , const LANES : usize > ( mask_impl:: Mask < T , LANES > )
89
91
where
@@ -521,57 +523,129 @@ where
521
523
}
522
524
523
525
/// A mask for SIMD vectors with eight elements of 8 bits.
526
+ ///
527
+ /// The layout of this type is unspecified, and may change between platforms
528
+ /// and/or Rust versions, and code should not assume that it is equivalent to
529
+ /// `[i8; 8]`.
524
530
pub type mask8x8 = Mask < i8 , 8 > ;
525
531
526
532
/// A mask for SIMD vectors with 16 elements of 8 bits.
533
+ ///
534
+ /// The layout of this type is unspecified, and may change between platforms
535
+ /// and/or Rust versions, and code should not assume that it is equivalent to
536
+ /// `[i8; 16]`.
527
537
pub type mask8x16 = Mask < i8 , 16 > ;
528
538
529
539
/// A mask for SIMD vectors with 32 elements of 8 bits.
540
+ ///
541
+ /// The layout of this type is unspecified, and may change between platforms
542
+ /// and/or Rust versions, and code should not assume that it is equivalent to
543
+ /// `[i8; 32]`.
530
544
pub type mask8x32 = Mask < i8 , 32 > ;
531
545
532
546
/// A mask for SIMD vectors with 64 elements of 8 bits.
547
+ ///
548
+ /// The layout of this type is unspecified, and may change between platforms
549
+ /// and/or Rust versions, and code should not assume that it is equivalent to
550
+ /// `[i8; 64]`.
533
551
pub type mask8x64 = Mask < i8 , 64 > ;
534
552
535
553
/// A mask for SIMD vectors with four elements of 16 bits.
554
+ ///
555
+ /// The layout of this type is unspecified, and may change between platforms
556
+ /// and/or Rust versions, and code should not assume that it is equivalent to
557
+ /// `[i16; 4]`.
536
558
pub type mask16x4 = Mask < i16 , 4 > ;
537
559
538
560
/// A mask for SIMD vectors with eight elements of 16 bits.
561
+ ///
562
+ /// The layout of this type is unspecified, and may change between platforms
563
+ /// and/or Rust versions, and code should not assume that it is equivalent to
564
+ /// `[i16; 8]`.
539
565
pub type mask16x8 = Mask < i16 , 8 > ;
540
566
541
567
/// A mask for SIMD vectors with 16 elements of 16 bits.
568
+ ///
569
+ /// The layout of this type is unspecified, and may change between platforms
570
+ /// and/or Rust versions, and code should not assume that it is equivalent to
571
+ /// `[i16; 16]`.
542
572
pub type mask16x16 = Mask < i16 , 16 > ;
543
573
544
574
/// A mask for SIMD vectors with 32 elements of 16 bits.
575
+ ///
576
+ /// The layout of this type is unspecified, and may change between platforms
577
+ /// and/or Rust versions, and code should not assume that it is equivalent to
578
+ /// `[i16; 32]`.
545
579
pub type mask16x32 = Mask < i16 , 32 > ;
546
580
547
581
/// A mask for SIMD vectors with two elements of 32 bits.
582
+ ///
583
+ /// The layout of this type is unspecified, and may change between platforms
584
+ /// and/or Rust versions, and code should not assume that it is equivalent to
585
+ /// `[i32; 2]`.
548
586
pub type mask32x2 = Mask < i32 , 2 > ;
549
587
550
588
/// A mask for SIMD vectors with four elements of 32 bits.
589
+ ///
590
+ /// The layout of this type is unspecified, and may change between platforms
591
+ /// and/or Rust versions, and code should not assume that it is equivalent to
592
+ /// `[i32; 4]`.
551
593
pub type mask32x4 = Mask < i32 , 4 > ;
552
594
553
595
/// A mask for SIMD vectors with eight elements of 32 bits.
596
+ ///
597
+ /// The layout of this type is unspecified, and may change between platforms
598
+ /// and/or Rust versions, and code should not assume that it is equivalent to
599
+ /// `[i32; 8]`.
554
600
pub type mask32x8 = Mask < i32 , 8 > ;
555
601
556
602
/// A mask for SIMD vectors with 16 elements of 32 bits.
603
+ ///
604
+ /// The layout of this type is unspecified, and may change between platforms
605
+ /// and/or Rust versions, and code should not assume that it is equivalent to
606
+ /// `[i32; 16]`.
557
607
pub type mask32x16 = Mask < i32 , 16 > ;
558
608
559
609
/// A mask for SIMD vectors with two elements of 64 bits.
610
+ ///
611
+ /// The layout of this type is unspecified, and may change between platforms
612
+ /// and/or Rust versions, and code should not assume that it is equivalent to
613
+ /// `[i64; 2]`.
560
614
pub type mask64x2 = Mask < i64 , 2 > ;
561
615
562
616
/// A mask for SIMD vectors with four elements of 64 bits.
617
+ ///
618
+ /// The layout of this type is unspecified, and may change between platforms
619
+ /// and/or Rust versions, and code should not assume that it is equivalent to
620
+ /// `[i64; 4]`.
563
621
pub type mask64x4 = Mask < i64 , 4 > ;
564
622
565
623
/// A mask for SIMD vectors with eight elements of 64 bits.
624
+ ///
625
+ /// The layout of this type is unspecified, and may change between platforms
626
+ /// and/or Rust versions, and code should not assume that it is equivalent to
627
+ /// `[i64; 8]`.
566
628
pub type mask64x8 = Mask < i64 , 8 > ;
567
629
568
630
/// A mask for SIMD vectors with two elements of pointer width.
631
+ ///
632
+ /// The layout of this type is unspecified, and may change between platforms
633
+ /// and/or Rust versions, and code should not assume that it is equivalent to
634
+ /// `[isize; 2]`.
569
635
pub type masksizex2 = Mask < isize , 2 > ;
570
636
571
637
/// A mask for SIMD vectors with four elements of pointer width.
638
+ ///
639
+ /// The layout of this type is unspecified, and may change between platforms
640
+ /// and/or Rust versions, and code should not assume that it is equivalent to
641
+ /// `[isize; 4]`.
572
642
pub type masksizex4 = Mask < isize , 4 > ;
573
643
574
644
/// A mask for SIMD vectors with eight elements of pointer width.
645
+ ///
646
+ /// The layout of this type is unspecified, and may change between platforms
647
+ /// and/or Rust versions, and code should not assume that it is equivalent to
648
+ /// `[isize; 8]`.
575
649
pub type masksizex8 = Mask < isize , 8 > ;
576
650
577
651
macro_rules! impl_from {
0 commit comments